Nginx 配置https 和 node多服務配置
阿新 • • 發佈:2018-12-20
準備工作
- 下載
SSL
證書檔案 - 安裝了
nginx
的伺服器 - 你的域名已經解析到目標伺服器
證書安裝
以騰訊云為例,SSL 的證書檔案可以在你的控制檯SSL管理後臺檢視並下載。
其他伺服器配置可以參考 ssl證書安裝指引
下載證書並解壓 得到下列資料夾,將 nginx
資料夾之外的 其他不用的檔案刪除。
將 Nginx
資料夾用 scp
工具上傳到你的伺服器 ,windows上可以用 git
工具實現 scp
功能。
tar -cvf ssl.tar Nginx && scp ssl.tar [email protected] :/etc/nginx/
在 nginx
根目錄解壓 ssl.tar
得到一個 ssl
資料夾
tar -xvf ssl.tar
配置 /etc/nginx/nginx.conf
檔案
server { listen 443; server_name www.你的域名.com; #填寫繫結證書的域名 ssl on; ssl_certificate /etc/nginx/ssl/1_www.你的域名.com_bundle.crt; ssl_certificate_key /etc/nginx/ssl/2_www.你的域名.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照這個協議配置 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照這個套件配置 ssl_prefer_server_ciphers on; location / { root html; #站點目錄 index index.html index.htm; } }
檢測 nginx.conf
檔案配置和軟重啟 nginx
nginx -t
# nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
# nginx: configuration file /etc/nginx/nginx.conf test is successful 配置正常
nginx -s reload #軟重啟nginx
開啟你的域名會看到nginx 的歡迎頁面,如果沒有,請檢查配置和證書是否正常。
nginx 配置 node埠轉發
現在有兩套 RESTful API
部署在node 服務a
服務b
,分別監聽在 埠 8765
和 3000
,分別存在與
/home/ruff/a/
和 /home/ruff/b/
資料夾
┌──────────┬────┬─────────┬──────┬──────┬────────┬─────────┬────────┬─────┬────────────┬──────┬──────────┐
│ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
├──────────┼────┼─────────┼──────┼──────┼────────┼─────────┼────────┼─────┼────────────┼──────┼──────────┤
│ app1 │ 0 │ 0.0.0 │ fork │ 4376 │ online │ 94 │ 3D │ 0% │ 55.9 MB │ root │ disabled │
│ app2 │ 1 │ 0.0.1 │ fork │ 5506 │ online │ 0 │ 46h │ 0% │ 107.0 MB │ root │ disabled │
└──────────┴────┴─────────┴──────┴──────┴────────┴─────────┴────────┴─────┴────────────┴──────┴──────────┘
現在我要配置將 https://www.你的域名.com
的請求全部轉發到 服務a
,https://www.你的域名.com/test/b
的請求轉發到 服務b
,同時配置兩套vue.js
打包的管理後臺的靜態資源。
編輯 nginx.conf
events {
worker_connections 768;
# multi_accept on;
}
http{
include mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name www.域名.com;
rewrite ^(.*)$ https://$host$1 permanent;
}
server{
listen 443;
server_name www.域名.com;
ssl on;
ssl_certificate /etc/nginx/ssl/1_www.域名.com_bundle.crt;
ssl_certificate_key /etc/nginx/ssl/2_www.域名.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
#a api
location /{
proxy_pass http://localhost:8765;
}
#a admin
location /a/admin {
root /home/ruff/a/admin/;
try_files /index.html =404;
}
#a static 打包的線上版本找不到資源
location /a/admin/static/ {
alias /home/ruff/a/admin/static/;
}
#b
location /test/b/ {
#url 重寫
rewrite /test/b/(.*) /$1 break;
# 轉發3000埠
proxy_pass http://127.0.0.1:3000;
proxy_set_header X-Real-Host $host;
proxy_set_header x-Real-IP $remote_addr;
proxy_set_header Host $host;
}
#資源轉發
location /assets/ {
alias /home/ruff/b/assets/;
}
#b 靜態資源
location /b/admin {
root /home/ruff/b/admin/;
try_files /index.html =404;
}
}
}
user www-data;
worker_processes auto;
pid /run/nginx.pid;
關於 nginx url rewrite
可以檢視 Nginx URL重寫(rewrite)配置及資訊詳解
如果nginx
啟動中之後無法訪問可以檢視原因類似的 [華為雲 ECS 安裝 Nginx 的埠問題]。(https://blog.csdn.net/Ruffaim/article/details/83744611)
稍後更新。