在AWS

时间:2017-11-20 12:07:33

标签: amazon-web-services nginx https gitlab gitlab-ci

我在配置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提供。

知道如何配置它吗?

1 个答案:

答案 0 :(得分:1)

对我有用的是ACM,ELB,GitLab Docker容器的组合(但安装在-EC2实例上并不重要)和本文:

https://codyparker.com/force-entire-site-ssl-nginx-behind-aws-load-balancer/

给了我需要的提示。我必须做的是:

  1. 创建我的Route 53 DNS名称
  2. 根据我的新DNS名称
  3. 创建我的ACM证书
  4. 使用我的GitLab EC2实例创建我的应用程序ELB,目标组是具有端口80的EC2实例。
  5. 注意到gitlab关于转发SSL端口的文档:https://docs.gitlab.com/omnibus/settings/nginx.html#supporting-proxied-ssl
  6. 在我的gitlab docker容器(omnibus gitlab)中添加:
  7. 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。