2016-02-22 47 views
2

在我的ngnix後面運行gitlab。ngnix和https後面的Gitlab - >不安全或不好的網關

服務器1(反向代理):Ngnix啓用HTTPS和/混帳以下配置:

location ^~ /git/ { 
    proxy_pass       http://134.103.176.101:80; 
    proxy_redirect off; 
    proxy_set_header Host $host; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Ssl on; 
} 

,如果我沒有在我的gitlab設置任何改變,這將工作,但由於外部http請求並不安全像:

'http://www.gravatar.com/avatar/c1ca2b6e2cd20fda9d215fe429335e0e?s=120&d=identicon'. This content should also be served over HTTPS. 

,所以如果我改變gitlab配置隱藏服務器2(HTTP gitlab)上:

external_url 'https://myurl' 
nginx['listen_https'] = false 

如正文中所述。我將得到一個錯誤的網關錯誤502.沒有頁面加載。

我該怎麼辦?


編輯:通過設置黑客攻擊:

gitlab_rails['gravatar_plain_url'] = 'https://www.gravatar.com/avatar/%{hash}?s=%{size}&d=identicon' 

到https ......這workes,但不是一個乾淨的解決方案。 (克隆網址仍然是http://)

+0

你運行一個獨立的nginx或gitlab綜合安裝目錄捆綁的版本?一般來說:如果你服務器例如gitlab通過https,它在某些時候包含了一個通過http的圖像或gravater,它只是打破了SSL加密 - 無論你做什麼。 gravatar服務也通過https服務其內容。你對ssl/header-security使用什麼特殊設置? – semm0

+0

感謝您的回覆。它是一個獨立的ngnix在一個不同的服務器上,它是一個反向代理服務器,我在上面發佈了位置配置。gitlabserver也有一個ngnix,但我只改變了這臺服務器上的gitlab配置文件。 (爲了更好的理解,上面固定了我的文字) – Cracker0dks

回答

4

我運行了一個類似的設置,我也遇到了這個問題。按照docs

默認情況下,當您指定以「https」時的external_url,Nginx的將不再偵聽未加密的HTTP流量在端口80

我看到你轉發通過HTTP和端口80傳輸流量,但會告訴GitLab使用HTTPS外部URL。在這種情況下,您需要設置listening port

nginx['listen_port'] = 80 # or whatever port you're using. 

此外,請記住在更改gitlab.rb後重新加載gitlab配置。你這樣做,用這個命令:

sudo gitlab-ctl reconfigure 

供參考,在這裏就是我要做的重定向:

的反向代理服務器上Nginx的配置:

location/{ 
    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_set_header X-Forwarded-Ssl on; 

    proxy_pass http://SERVER_2_IP:8888; 
} 

GitLab配置文件gitlab.rb,在GitLab服務器上:

external_url 'https://gitlab-subdomain.domain.com' 
nginx['listen_addresses'] = ['SERVER_2_IP'] 
nginx['listen_port'] = 8888 
nginx['listen_https'] = false 
+0

哇!解決了它!謝謝:) – Cracker0dks

+0

我有幾乎相同的設置,這幫助我解決了無法在external_url值中使用https的問題(這會導致nginx查找證書和所有內容)。謝謝! – Aaron

相關問題