Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Nginx 反向代理與 SSL 終結實戰配置範例詳解

編輯:Linux 系統常見問題解答

本文提供一份生產環境就緒的 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 sslNginx 終結 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調大緩衝區減少磁碟臨時檔寫入,提升代理吞吐

部署檢查清單

  1. 憑證檔案權限:chmod 600 /etc/nginx/ssl/server.key
  2. 測試語法:nginx -t
  3. 平滑重載:nginx -s reload
  4. 驗證 SSL:openssl s_client -connect tanzhi.sinaapp.com:443
  5. 確認 proxy_params 內含 proxy_set_header Host $host 等關鍵標頭傳遞

此配置作為反向代理/SSL 終結入口的標準模板,可根據實際上游架構(單節點/叢集、HTTP/HTTPS)微調 upstream 與 proxy_pass 協定。

Copyright © Windows教程網 All Rights Reserved