我目前正在努力通过 SSL 反向代理路由 Gitlab 安装,以便让 Gitlab 在路径上响应https://我的服务器/git。
我正在使用sameersbn/gitlab
Docker 映像和 nginx Web 服务器作为反向代理。
如果没有 SSL,我对 Gitlab 使用以下环境配置:
- GITLAB_PORT:80
- GITLAB_RELATIVE_URL_ROOT:/git
- GITLAB_HOST:我的服务器
我的site-config
nginx 如下所示:
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;