欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > nginx配置跳转设置Host有误导致报404问题

nginx配置跳转设置Host有误导致报404问题

2025/4/1 16:30:51 来源:https://blog.csdn.net/leftfist/article/details/146550140  浏览:    关键词:nginx配置跳转设置Host有误导致报404问题

我们有个项目,前端调用了第三方接口。为了避免跨域,所以使用nginx进行转发。一直正常工作,相安无事。近日第三方调整了安全策略,http转换成https,原本使用ip,现在也改成使用域名,所以nginx这里我们也需要改一下。结果改了以后,报404。

nginx的相关配置如下:

location /other3/ {proxy_pass https://gh.abc.com/3-18035/;proxy_set_header   X-Forwarded-Proto $scheme;proxy_set_header   Host              $http_host;proxy_set_header   X-Real-IP         $remote_addr;proxy_read_timeout 180;
}

我再三拷问AI,它说了几次废话后,说有可能是Host头部的原因:
默认情况下,Nginx 会将客户端请求的 Host 头部(即客户端本身的地址,例如 10.26.40.24:9988)转发给后端服务器。
如果后端服务器对 Host 头部有严格要求(例如必须是 gh.abc.com),则需要显式设置 Host 为后端服务器的域名。

于是再次修改,问题解决:

location /other3/ {proxy_pass https://gh.abc.com/3-18035/;proxy_set_header   X-Forwarded-Proto $scheme;#proxy_set_header   Host              $http_host;proxy_set_header   Host              gh.abc.com;  # 修改这里proxy_set_header   X-Real-IP         $remote_addr;proxy_read_timeout 180;
}

主要是nginx的配置代码,都是抄过来的,东抄西抄,不知道具体含义。请教AI,它给出的含义是:

# 匹配所有以 "/other3/" 开头的请求
location /other3/ {# 将匹配到的请求转发到 https://gh.abc.com/3-18035/proxy_pass https://gh.abc.com/3-18035/;# 设置 "X-Forwarded-Proto" 请求头为客户端请求的协议(HTTP 或 HTTPS)# 即将客户端请求的协议类型(HTTP 或 HTTPS)传递给后端服务器# 比如我的客户端是http,则以http向目标服务器请求,尽管目标服务器是是https;# 如果目标服务器只认https,那只能是这样设置:proxy_set_header X-Forwarded-Proto https;proxy_set_header   X-Forwarded-Proto $scheme;# 将 Host 头设置为客户端请求中原始的 Host 头部值# proxy_set_header   Host              $http_host;# 显式设置 "Host" 请求头为 "gh.abc.com"proxy_set_header   Host              gh.abc.com;  # 设置 "X-Real-IP" 请求头为客户端的真实 IP 地址proxy_set_header   X-Real-IP         $remote_addr;# 设置 Nginx 等待后端服务器响应的超时时间为 180 秒proxy_read_timeout 180;
}

学习了。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词