You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置反向代理后内网无法访问GitLab且登录报422错误如何解决?

GitLab公网HTTPS正常、内网HTTP访问报422错误解决方案

根因说明

你配置的GitLab external_url为HTTPS协议公网地址,GitLab默认开启CSRF防护,会校验请求来源协议与external_url预设协议是否一致。内网直接走HTTP访问时协议不匹配,CSRF校验失败触发422错误。

修复操作步骤

  1. 编辑GitLab核心配置文件 /etc/gitlab/gitlab.rb
  2. 调整或补充以下配置项:
  • 配置允许的访问主机列表,把内网访问用到的IP、域名加入白名单
    gitlab_rails['allowed_hosts'] = ['你的公网GitLab域名', '内网访问GitLab的IP', '内网访问GitLab的域名(如有)']
    
  • 配置CSRF允许的来源规则,放行HTTP协议的内网访问请求
    gitlab_rails['csrf_allowed_origins'] = ['http://内网访问GitLab的IP', 'http://内网访问GitLab的域名(如有)']
    
  • 修正Nginx请求头识别规则,自动适配不同访问场景的协议
    nginx['proxy_set_headers'] = {
      "X-Forwarded-Proto" => "$scheme",
      "Host" => "$http_host",
      "X-Real-IP" => "$remote_addr",
      "X-Forwarded-For" => "$proxy_add_x_forwarded_for"
    }
    
  • 确认GitLab Nginx开启HTTP端口监听:如果之前为了反向代理关闭了HTTPS监听,保持原有配置即可,确保80端口监听正常
    nginx['listen_http'] = true
    nginx['listen_https'] = false 
    
  1. 保存配置文件后执行命令生效配置:
    gitlab-ctl reconfigure
  2. 重启GitLab服务确保所有配置生效:
    gitlab-ctl restart

内容的提问来源于stack exchange,提问作者andreas.teich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 20:36:04