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

GitLab CE 置于jwilder Nginx反向代理后Web IDE加载失败报错

解决GitLab CE在反向代理下Web IDE混合内容加载失败的问题

从你的错误日志能直接定位核心问题:混合内容(Mixed Content)——HTTPS页面发起了HTTP协议的API请求,浏览器的安全策略直接拦截了这个请求。本质原因是GitLab容器内部不知道自己通过HTTPS对外提供服务,所以生成的所有API链接都是HTTP协议,和外部代理的HTTPS访问环境不匹配。

下面是针对性的解决方案,你只需要修改GitLab的配置文件/etc/gitlab/gitlab.rb:

关键配置项调整

  1. 指定外部HTTPS访问地址:

    external_url 'https://lab.flockcode.com'
    

    这会强制GitLab以HTTPS协议生成所有对外链接,直接解决内部API地址协议不匹配的问题。

  2. 适配反向代理的环境配置:
    因为你的反向代理已经处理了HTTPS加密,GitLab容器内部只需要监听HTTP端口,同时要信任代理传递的协议头信息:

    # 容器内部监听80端口(对应你设置的VIRTUAL_PORT=80)
    nginx['listen_port'] = 80
    # 容器内部无需启用HTTPS,交给反向代理处理
    nginx['listen_https'] = false
    # 信任反向代理的IP(可以填Docker主机IP或反向代理容器IP,比如Docker默认网关172.17.0.1)
    gitlab_rails['trusted_proxies'] = ['172.17.0.1']
    # 强制GitLab所有交互使用HTTPS
    gitlab_rails['force_ssl'] = true
    # 确保代理传递的协议头被GitLab正确识别
    nginx['proxy_set_headers'] = {
      "X-Forwarded-Proto" => "https",
      "X-Forwarded-Ssl" => "on"
    }
    

应用配置并验证

修改完配置后,不用重启整个容器(耗时太长),直接在GitLab容器内执行重新配置命令即可:

docker exec <你的GitLab容器名称> gitlab-ctl reconfigure

等待配置完成后刷新Web IDE页面,检查Chrome控制台——此时API请求会自动切换为HTTPS协议,Web IDE就能正常加载了。

为什么之前的尝试没效果?

你之前调整的X-header相关配置,没有和external_url、trusted_proxies配合使用:GitLab只有明确知道自己的外部HTTPS地址,并且信任代理传递的协议头,才会正确生成HTTPS格式的API链接,否则还是会默认用容器内部的HTTP协议生成地址,最终导致混合内容错误。

内容的提问来源于stack exchange,提问作者user3024696

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:53:24