nginx代理的端口跳出问题
80/443 标准端口
proxy_set_header Host $host;
自定义端口(8080/8090 等)
proxy_set_header Host $host:$server_port;
通用兼容写法(推荐)
自动适配端口,标准端口不显示,自定义端口自动携带
proxy_set_header Host $http_host;
传递给后端服务器的 Host 请求头是否包含端口号,直接影响后端服务获取到的域名和端口信息。
| 配置 | 传递给后端的 Host 值 | 携带端口 | 核心用途 |
|---|---|---|---|
$host | 纯域名 / IP(www.test.com) | ❌ 不携带 | 通用场景、80/443 标准端口 |
$host:$server_port | 域名 + 端口(www.test.com:8080) | ✅ 携带 | 自定义端口、后端需要完整端口信息 |
二是关于静态资源的代理设置,如图片和CSS/JS文件的处理。配置中涉及SSL证书、协议、缓存及不同文件类型的location规则,展示了如何正确配置Nginx以实现后端服务代理和静态资源的高效传递
server {
listen 443;
server_name www.sss.com;
ssl on;
ssl_certificate /ss/cert/ltd.pem;
ssl_certificate_key /ss/cert/ltd.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHAA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MDD5:!AADH:!RsC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://192.168.1.101:1021;
#proxy_redirect off;
#自动修正重定向
proxy_redirect default;
#将端口视为变量
proxy_set_header Host $host:$server_port;
#传递真实客户端IP
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;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Port $server_port;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
proxy_pass http://192.168.1.101:1021;
}
location ~ .*\.(js|css)?$
{
proxy_pass http://192.168.1.101:1021;
}
}