本文提供一份生產環境就緒的 Nginx 反向代理 + HTTPS 終結 完整配置範例,涵蓋上游伺服器定義、SSL 憑證、代理標頭傳遞、靜態資源快取、連線逾時調優等關鍵設定。
mvtp_web 站點)# 上游伺服器群組
upstream mysite {
server 192.168.1.9:8080;
}
server {
listen 8080;
listen 443 ssl; # SSL 終結於 Nginx
server_name tanzhi.sinaapp.com;
# SSL 憑證與安全參數
ssl on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 禁用 SSLv3 (POODLE)
ssl_ciphers HIGH:!aNULL:!MD5;
# 根路徑代理至上游 HTTPS
location = / {
proxy_pass https://mysite;
}
# 靜態資源直接服務,設定長效快取
location ~ /static/ {
root /var/www/XXX/static;
expires 30d;
}
# 其餘請求代理至上游
location / {
proxy_pass https://mysite;
proxy_redirect off;
}
# 代理標頭與緩衝區調優(含通用 proxy_params)
include /etc/nginx/proxy_params;
client_header_buffer_size 32k;
large_client_header_buffers 4 16k;
client_max_body_size 300m;
client_body_buffer_size 128k;
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
| 區塊/指令 | 用途與調優重點 |
|---|---|
upstream | 定義後端伺服器池,支援權重、備援、健康檢查(max_fails/fail_timeout) |
listen 443 ssl | Nginx 終結 TLS,後端可跑 HTTP,減輕應用伺服器加解密負擔 |
ssl_protocols | 明確啟用 TLS 1.0+,禁用 SSLv3/舊協定 |
ssl_ciphers | 高強度加密套件,排除匿名/MD5 |
location = / | 精確匹配根路徑,優先級高於前綴/正則 location |
location ~ /static/ | 正則匹配靜態資源,直接由 Nginx 服務,設定 expires 30d 瀏覽器快取 |
proxy_pass https://mysite | 反向代理至上游 HTTPS,注意尾端斜線語意差異 |
client_max_body_size 300m | 允許大檔上傳(預設 1m 太小) |
proxy_*_timeout 600 | 長連線/大檔/慢後端場景防止 504 Gateway Timeout |
proxy_buffers | 調大緩衝區減少磁碟臨時檔寫入,提升代理吞吐 |
chmod 600 /etc/nginx/ssl/server.keynginx -tnginx -s reloadopenssl s_client -connect tanzhi.sinaapp.com:443proxy_params 內含 proxy_set_header Host $host 等關鍵標頭傳遞此配置作為反向代理/SSL 終結入口的標準模板,可根據實際上游架構(單節點/叢集、HTTP/HTTPS)微調 upstream 與 proxy_pass 協定。