如何通过 SSL 反向代理正确路由子目录中的 Gitlab 安装?

如何通过 SSL 反向代理正确路由子目录中的 Gitlab 安装?

我目前正在努力通过 SSL 反向代理路由 Gitlab 安装,以便让 Gitlab 在路径上响应https://我的服务器/git

我正在使用sameersbn/gitlabDocker 映像和 nginx Web 服务器作为反向代理。

如果没有 SSL,我对 Gitlab 使用以下环境配置:

  • GITLAB_PORT:80
  • GITLAB_RELATIVE_URL_ROOT:/git
  • GITLAB_HOST:我的服务器

我的site-confignginx 如下所示:

server {
        listen 80 default_server;
        server_name myserver;


    location /git {
        proxy_pass      http://gitlab/git;

        proxy_redirect off;
        proxy_set_header Host           $http_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;
    }

}

反向代理也是一个 Docker 容器,它将我的 Gitlab 容器作为主机名链接起来gitlab

这有效 - 将会http://我的服务器/git将我重定向到登录页面。

但是,当将其更改为 SSL 时:

  • GITLAB_PORT:443
  • GITLAB_RELATIVE_URL_ROOT:/git
  • GITLAB_HOST:我的服务器
  • GITLAB_HTTPS: true
  • SSL_SELF_SIGNED: true

server {
    listen 443 ssl;
    server_name myserver;
    ssl_certificate /etc/ssl/certs/server.crt;
    ssl_certificate_key /etc/ssl/certs/server.key;

    location /git {
        proxy_pass      http://gitlab/git;

        proxy_redirect off;
        proxy_set_header Host           $http_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  https;
    }

}

不起作用。当调用时https://myserver/git,它会尝试重定向到http://localhost.my.company.domain.com/git/users/sign_in不存在的。

当我使用时,curl -k -L -vvv https://myserver/git我看到 nginx 将我重定向到http://localhost/git/users/sign_in

我错过了什么?

答案1

缺少以下内容site-config

proxy_set_header X-Forwarded-Ssl on;

相关内容