Nginx反向代理请求未携带端口引发404错误如何解决?
Nginx反向代理Gitlab 404问题修复方案
问题根因
本次404错误由多个配置问题共同导致:
- 配置中
proxy_pass端口与你预期的Gitlab服务端口9000不一致,当前填写为9980 port_in_redirect off配置会强制Nginx在重定向响应中移除端口,导致资源请求路径缺失端口- 缺少协议转发头、重定向替换规则,Gitlab生成的静态资源路径未携带
/gitlab前缀
修改后的完整Nginx配置
worker_processes 1; events { worker_connections 1024; } http { server { listen 80; location /gitlab/ { # 修正为实际Gitlab服务端口 proxy_pass http://192.168.1.10:9000/; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $host:$server_port; # 新增协议转发头,保证Gitlab识别访问协议正常 proxy_set_header X-Forwarded-Proto $scheme; # 新增重定向替换规则,将服务端返回的内部路径替换为对外的带前缀路径 proxy_redirect http://192.168.1.10:9000/ http://$host/gitlab/; } } }
Gitlab服务端配套调整
需要同时修改Gitlab的gitlab.rb配置文件,指定对外访问路径前缀,保证Gitlab生成的资源路径自带/gitlab前缀:
external_url 'http://你的外网IP/gitlab'
修改完成后执行gitlab-ctl reconfigure使配置生效即可。
内容的提问来源于stack exchange,提问作者KurdTt-
相关产品推荐
相关产品推荐

