我在配置gitlab服务器时遇到问题。我希望它的外部网址位于 HTTPS 中,但我希望nginx能够像 HTTP 一样配置。
我的Gitlab服务器安装在AWS EC2上,后面有一个ELB(负载均衡器)。 ELB处理HTTPS内容(使用和ACM),因此gitlab实例在HTTP上提供:
WEB =>(HTTPS)=> [ELB] =>(HTTP)=> [EC2]
目前,gitlab配置为external_url 'http://gitlab.*****'
,它适用于基本功能,但对于CI输出跟踪,例如,gitlab尝试使用HTTP URL获取它,然后出现错误:
混合内容:' https://gitlab。***** / [所有者] / [项目] / - / jobs / 44'是通过HTTPS加载的,但请求了一个不安全的XMLHttpRequest端点' http://gitlab。***** / [owner] / [project] / - / jobs / 44 / - / jobs / 44 / trace.json ?状态=&#39 ;.此请求已被阻止;内容必须通过HTTPS提供。
知道如何配置它吗?
答案 0 :(得分:1)
对我有用的是ACM,ELB,GitLab Docker容器的组合(但安装在-EC2实例上并不重要)和本文:
https://codyparker.com/force-entire-site-ssl-nginx-behind-aws-load-balancer/
给了我需要的提示。我必须做的是:
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url "https://example.com"
nginx['listen_port'] = 80
nginx['listen_https'] = false
nginx['redirect_http_to_https'] = true
nginx['proxy_set_headers'] = {
"X-Forwarded-Proto" => "https",
"X-Forwarded-Ssl" => "on"
}
对于物理实例,gitlab.rb应该放在哪里。然后我不仅让它工作,而且可以自动将mydomain.com在Web浏览器中重定向到https://example.com。希望这可以帮助你和其他人。如果您有任何问题,请告诉我。
编辑:目标群体必须是80,而不是像我错误陈述的443。这是因为如果您在端口443上将流量传递给它,gitlab将无法转发SSL。