Nginx

代理背後的 GitLab 的 HTTPS 支持

  • October 3, 2022

我有一個公共靜態 IP 地址和幾個在他們自己的虛擬機上執行在埠 80 和 443 上的應用程序。

其中之一是 GitLab。

因為我不能將埠 80/443 轉發到其中一個,所以我有:

  1. 接收所有 80/443 請求的 Ubuntu 機器。
  2. nginx安裝在其上並根據主機頭配置為代理伺服器,例如scm.mydomain.com配置為proxy_pass 192.168.50.200GitLab 機器。

到目前為止,一切都按預期工作。

我的挑戰是如何啟用https對 GitLab 的支持。我知道當我編輯external_urlhttps://....GitLab 時會處理剩下的事情,但這就是問題開始的地方,因為現在我必須在我的代理伺服器中轉發埠 443 而不是 80,並且沒有有效的證書是不可能的,並且有效的證書scm.mydomain.com是已經安裝在 GitLab 機器上。

有解決辦法嗎?

這是我nginx正在執行的埠 80 的配置:

server {
   listen 80;
   server_name scm.mydomain.com;

   location / {
       include proxy_params;
       proxy_pass http://192.168.50.200;
   }
}

並且沒有有效的證書是不可能的

是的。只需將proxy_ssl_verify設置為 false。

server {
   listen 80;
   server_name scm.mydomain.com;

   location / {
       include proxy_params;
       proxy_pass http://192.168.50.200;
   }
}

server {
       listen 443 ssl http2;
       server_name scm.mydomain.com;;

       ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
       ssl_certificate_key /etc/letsencrypt/www.example.com/privkey.pem;

       include snippets/ssldefaults.conf;
       location / {
               include snippets/proxydefaults.conf;
               proxy_ssl_verify off;
               proxy_pass  https://192.168.50.200/ ;
       }
   }

引用自:https://serverfault.com/questions/1112144