Docker部署带反向代理的Gitlab实例Pages服务访问404故障排查
问题根因
- 你配置的Gitlab主站域名和Pages泛域名解析到同一IP,所有80端口请求默认都被Gitlab内置的主站Nginx接收,你当前的
gitlab.rb配置未开启Pages对应的Nginx代理规则,导致*.pages.example.io的请求无法转发到后端Gitlab Pages服务,直接返回404。 - 日志显示Gitlab Pages服务最终已成功连接内部API,且静态文件已生成在指定路径,说明Pages服务本身运行正常,问题完全出在请求路由环节。
解决方案
- 补充
gitlab.rb配置,在原有配置基础上新增以下内容:
# 原有配置保留 pages_external_url "http://pages.example.io" gitlab_pages['enable'] = true # 新增配置:开启Pages对应的Nginx反向代理规则 pages_nginx['enable'] = true
- 执行配置生效命令:
gitlab-ctl reconfigure
如果是Docker部署,进入Gitlab容器内部执行上述命令即可。 - 验证服务状态:
执行gitlab-ctl status确认nginx和gitlab-pages服务均处于运行状态,可通过以下命令验证Pages服务本身可正常响应:
curl -H "Host: group_test.pages.example.io" http://127.0.0.1:8090/group_nested/project_test
如果返回index.html的内容,说明服务运行正常。
4. 权限配置校验:如果项目为私有项目,可进入项目「设置」→「Pages」页面,关闭Pages访问控制,允许匿名用户访问,避免权限限制导致的404问题。
5. 外层代理配置(可选):如果你的Docker容器外层还部署了独立的Nginx反向代理,需要在外层Nginx中添加配置,将所有Host为*.pages.example.io的请求转发到Gitlab容器的80端口。
完成上述操作后重新访问Pages地址即可正常加载内容。
内容的提问来源于stack exchange,提问作者Сергей Литвинов
相关产品推荐
相关产品推荐

