服務器同時運行 PHP(端口 80/443)與 Java/Tomcat(端口 8080)應用,需通過域名將請求路由到對應後端。
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/ 下獨立文件root + location),動態請求 proxy_pass 到後端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
}
}
proxy_redirect 或前端使用相對路徑underscores_in_headers on;client_max_body_size 100M;