HAProxy与Nginx配置问题:访问根域名跳转内网IP无法远程访问
解决方案
1. 修正域名拼写偏差
首先确认域名一致性:你的HAProxy ACL规则匹配的域名为demoafc.testtest.com,但你描述的异常访问域名为demoafc.testest.com,先修正域名拼写错误,避免因规则不匹配导致流量转发异常。
2. 调整HAProxy配置,传递原始请求信息
在backend demoafc配置段添加请求头传递规则,让后端Nginx获取到用户真实的访问域名、协议等信息:
backend demoafc acl demoafc_url hdr_dom(host) -i demoafc.testtest.com use_backend demoafc if demoafc_url backend demoafc server demoafc 192.168.24.121:80 # 新增以下3行配置 http-request set-header Host %[hdr(host)] http-request set-header X-Forwarded-Proto https http-request set-header X-Forwarded-For %[src]
修改完成后重载HAProxy配置生效。
3. 调整Nginx配置,避免内网IP跳转
你当前的跳转根因为Nginx返回的重定向地址用了内网IP,可二选一调整配置:
- 方案A:将重定向地址替换为公网域名
若Nginx原有根路径跳转规则为类似return 302 http://192.168.24.121:8080/,修改为:return 302 https://$host/; - 方案B:直接反向代理本地8080服务,无需跳转
在Nginx server配置段新增根路径代理规则,用户无感知访问后端服务:location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
配置修改完成后执行nginx -t校验配置合法性,校验通过后执行nginx -s reload重载配置。
4. 效果验证
清空浏览器缓存后重新访问目标域名,确认不会再跳转到内网IP地址,公网环境可正常访问。
内容的提问来源于stack exchange,提问作者Joze Gros
相关产品推荐
相关产品推荐

