nginx代理给网关时 丢失请求的host信息问题
描述:访问gulimall.com,Nginx反向代理到网关地址,然后网关转发到具体的product服务
域名映射的效果如下:
具体步骤:
(1)hosts文件配置域名和ip映射
修改windows下host文件:C:\Windows\System32\drivers\etc\hosts
为了方便,可以使用SwitchHost工具
(2)配置nginx.conf
在http块中,配置上游服务器
vi /mydata/nginx/conf/nginx.conf
upstream gulimall{ #配置上游服务器,起名为gulimall
server 192.168.56.1:88; #配置上游服务器为网关地址,192.168.56.1为windows的ip地址
}
(3)配置gulimall.conf
vi /etc/nginx/conf.d/gulimall.conf
在server块中配置请求的路由
location / { #配置请求的路由
proxy_pass http://gulimall; #因为主配置文件配置了上游服务器为网关地址,所以可以请求路由到http://192.168.xxx.xxx:10000/
}
(4)重启nginx
(5)配置网关
添加路由规则
(6)测试
访问gulimall.com报404,丢失请求的host信息
问题:是nginx代理给网关时 丢失请求的host信息
解决:proxy_set_header Host $host
在gulimall.conf 设置 proxy_set_header Host $host
location / { #配置请求的路由
proxy_set_header Host $host; #坑点:Nginx代理给网关时会丢失请求的host等信息
proxy_pass http://gulimall; #因为主配置文件配置了上游服务器为网关地址,所以可以请求路由到http://192.168.xxx.xxx:10000/
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步