gitlab-ce使用nginx做反向代理的方式啟用https

myskies發表於2022-12-28

由於某些未知的原因,gitlab-ce的https近期出現了問題,被chrome識別出是非安全的連線。索性我們將了gitlab-ce的https改為http。但當下https基本上已經成為了標準,不啟用https好像有點說不過去。

本文我們使用nginx來做反向代理來啟用https,希望能解決gitlab-ce的證書問題。

gitlab配置

官方文件給出了詳細的配置步驟,我們參考即可:

  1. 編輯Edit /etc/gitlab/gitlab.rb:

    registry_external_url 'https://gitlab.yourdomain.com'
    
    nginx['listen_port'] = 81
    nginx['listen_https'] = false
  2. 重新配置gitlab:

    sudo gitlab-ctl reconfigure
  3. 在配置nginx時配置轉發的header項,包括但不限於:Host, X-Forwarded-Ssl, X-Forwarded-For, X-Forwarded-Port

nginx配置

將以下程式碼新增到nginx配置檔案中,其證書位置等替換為自己的資訊。

server {
    listen              443 ssl;
    server_name         gitlab.yourdomain.com;
    ssl_certificate     gitlab.yourdomain.com.crt;
    ssl_certificate_key gitlab.yourdomain.com.key;
    error_page 497 301 =307 https://$host:$server_port$request_uri;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    location / {
            proxy_pass http://localhost:81;
            proxy_redirect off;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Ssl on;
            proxy_set_header X-Forwarded-Port $server_port;
        }
}

配置完成後使用nginx -T 驗證配置是否成功,然後使用nginx -s reload來使配置生效。

然後我們使用curl來測試,看是否達到了預期:

  1. 訪問:http://gitlab.yourdomain.com:443 時給出重定向:http://gitlab.yourdomain.com:443
  2. 證書正確。

總結

看官方文件很重要,測試也很重要。

相關文章