1. 程式人生 > >Nginx 配置https 和 node多服務配置

Nginx 配置https 和 node多服務配置

準備工作

  • 下載 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,分別監聽在 埠 87653000,分別存在與

/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的請求全部轉發到 服務ahttps://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)

稍後更新。
在這裡插入圖片描述