最近在搞小程序,小程序的服務必須使用https協議,以前沒學過這些,因而寫下這篇博客,記錄本身遇到的問題node
本篇博客解決這些問題,服務器的登錄配置、項目的部署、https證書的申請、nginx部署https與轉發本地服務linux
使用終端進行配置nginx
// 賦予私鑰文件僅本人可讀權限 chmod 400 <下載的與雲服務器關聯的私鑰的絕對路徑> // 運行如下遠程登陸命令 ssh -i <下載的與雲服務器關聯的私鑰的絕對路徑> <username>@<hostname or ip address>
// 下載nvm wget https://github.com/cnpm/nvm/archive/v0.23.0.tar.gz // 解壓nvm tar -xf v0.23.0.tar.gz // 進入目錄 cd nvm-0.23.0/ // 安裝nvm ./install.sh // 安裝後執行 source ~/.bash_profile
使用nvm安裝nodegit
nvm install 10.14.2
因爲個人代碼託管在github上,給服務器安裝git方便管理代碼github
在linux安裝gitnpm
git clone https://github.com/lfhwnqe/wechat_server.git
進入項目根目錄安裝依賴小程序
cd wechat_server npm install
啓動項目進行鏈接緩存
npm start
如今項目在本7001端口啓動bash
此時訪問服務器公網ip:7001就能夠訪問到服務器上啓動的服務服務器
在服務器運行一下命令,經過openssl生成csr和私鑰
openssl req -new -newkey rsa:2048 -sha256 -nodes -out linuoblog.cn.csr -keyout linuoblog.cn.key -subj "/C=CN/ST=ShenZhen/L=ShenZhen/O=NUO Inc./OU=Web Security/CN=linuoblog.cn"
下面是上述命令相關字段含義:
要開啓 HTTPS 服務,在配置文件信息塊(server block),必須使用監聽命令 listen
的 ssl 參數和定義服務器證書文件和私鑰文件,同時經過設置location模塊把發送到網頁的請求轉發到服務器上的node服務,以下所示:
worker_processes auto; http { #配置共享會話緩存大小,視站點訪問狀況設定 ssl_session_cache shared:SSL:10m; #配置會話超時時間 ssl_session_timeout 10m; server { listen 443 ssl; server_name linuoblog.cn; #設置長鏈接 keepalive_timeout 70; #HSTS策略 add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; #證書文件 ssl_certificate full_chain.pem; # 證書的路徑 #私鑰文件 ssl_certificate_key linuoblog.cn.key; # 私鑰的路徑 location / { # 這裏是把連接代理到本機的7001端口 proxy_pass http://127.0.0.1:7001; } } } events { worker_connections 1024; ## Default: 1024 }
配置完成後啓動nginx
nginx
這個時候,訪問本身的域名就能看到https服務了。同時也經過nginx把網頁端的請求轉發到了服務器本地的server上
原文地址