Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Nginx 反向代理配置實戰教程

編輯:Linux 教學

場景

服務器同時運行 PHP(端口 80/443)與 Java/Tomcat(端口 8080)應用,需通過域名將請求路由到對應後端。

核心配置示例:代理 Tomcat 應用

server {
    listen 80;
    server_name portal.jser.io;
    server_tokens off;  # 隱藏 Nginx 版本號

    location / {
        proxy_pass https://localhost:8080/;
        proxy_redirect off;

        # 傳遞客戶端真實信息
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # WebSocket 支持(可選)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        # 超時設置
        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;
    }
}

關鍵指令解析

指令作用
proxy_pass指定上游服務器地址,末尾 / 表示絕對路徑替換
proxy_set_header Host傳遞原始 Host 頭,後端可識別虛擬主機
X-Real-IP客戶端真實 IP,後端日誌/限流使用
X-Forwarded-For代理鏈路 IP 列表,格式:client, proxy1, proxy2
proxy_redirect重寫後端 Location/Refresh 頭,off 保持原樣
proxy_http_version 1.1啟用 HTTP/1.1,支持 Keep-Alive、WebSocket

多站點部署策略

  • 每個域名一個 server 塊,配置在 /etc/nginx/conf.d/ 下獨立文件
  • 靜態資源直接由 Nginx 服務(root + location),動態請求 proxy_pass 到後端
  • SSL 終結在 Nginx,後端走 HTTP,減輕應用服務器負擔

負載均衡擴展(可選)

upstream tomcat_cluster {
    server 127.0.0.1:8080 weight=3;
    server 127.0.0.1:8081 weight=2;
    server 192.168.1.10:8080 backup;  # 熱備
}

server {
    location / {
        proxy_pass https://tomcat_cluster;
        # ... 其他 proxy_set_header
    }
}

常見問題排查

  • 502 Bad Gateway:上游未啟動、端口錯誤、防火牆阻擋、SELinux
  • 靜態資源 404:後端生成的絕對路徑不匹配,需配置 proxy_redirect 或前端使用相對路徑
  • Header 丟失:Nginx 默認隱藏下劃線 Header,添加 underscores_in_headers on;
  • 大文件上傳截斷:設置 client_max_body_size 100M;
Copyright © Windows教程網 All Rights Reserved