Nginx proxy_set_header参数设置

本文详细探讨了Nginx配置中proxy_set_header Host参数的不同设置对请求头Host值的影响。不设置该参数时,Host取proxy_pass目标地址;设置为$host时,Host为浏览器请求的域名,不包含端口;而设置为$http_host时,Host会包含端口信息。对于含有重定向的场景,$host可能导致端口丢失引发404错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、不设置 proxy_set_header Host

不设置 proxy_set_header Host 时,浏览器直接访问 nginx,获取到的 Host 是 proxy_pass 后面的值,即 $proxy_host 的值,参考
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header

# cat ngx_header.conf 
server {
    listen 8090;
    server_name _;
    location / {
        proxy_pass http://172.31.5.0:5000;
    }
}

结果如下:返回proxy_pass 后面的值
在这里插入图片描述

二、设置proxy_set_header Host $host

server {
    listen 8090;
    server_name _;
    location / {
        proxy_set_header Host $host;
        proxy_pass http://172.31.5.0:5000;
    }
}

结果如下:不再是 proxy_pass代理的ip地址了, 不包含端口
在这里插入图片描述


三、设置proxy_set_header Host $http_host

server {
    listen 8090;
    server_name _;
    location / {
        proxy_set_header Host $http_host;
        proxy_pass http://172.31.5.0:5000;
    }
}

结果如下:不再是 proxy_pass代理的ip地址了, 包含端口
在这里插入图片描述

提示: 设置 proxy_set_header Host $host 时,浏览器直接访问 nginx,获取到的 Host 是 $host 的值,没有端口信息。此时代码中如果有重定向路由,那么重定向时就会丢失端口信息,导致 404

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值