![如何将 gitlab 和 nginx 配置为对 Azure AD 进行 SSL 身份验证的反向代理?](https://linux22.com/image/785967/%E5%A6%82%E4%BD%95%E5%B0%86%20gitlab%20%E5%92%8C%20nginx%20%E9%85%8D%E7%BD%AE%E4%B8%BA%E5%AF%B9%20Azure%20AD%20%E8%BF%9B%E8%A1%8C%20SSL%20%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E7%9A%84%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%EF%BC%9F.png)
我已经为此努力了好几天,我真的希望有好心人能帮忙。
Nginx 位于 Azure 中的一台 Ubuntu 机器上。在同一台机器上,Docker 引擎正在运行一个 Gitlab 容器(使用 nginx 为其提供服务)。
我已经让所有东西都按我想要的方式运行,除了通过纯 http。昨天我添加了 SSL,但没有成功,现在我甚至无法回到简单的旧端口 80。
对于反向代理,我有2个用于nginx的配置文件,一个用于http,一个用于https:
server {
listen 80;
server_name gitlab.mydomain.com;
location / {
proxy_pass http://localhost:5080;
}
}
我最后添加的是 SSL 配置中的 proxy_redirect,因为我的浏览器试图重定向到我的本地本地主机:
server {
listen 443 ssl;
server_name gitlab.mydomain.com;
ssl_certificate /srv/gitlab/cert/cert.pem;
ssl_certificate_key /srv/gitlab/cert/key.pem;
location / {
proxy_pass http://localhost:5443;
proxy_redirect http://localhost:5080/ https://gitlab.mydomain.com/;
}
}
这是 gitlab 的 yaml:
services:
web:
image: 'gitlab/gitlab-ee:latest'
container_name: gitlab
restart: always
hostname: gitlab
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.mydomain.com'
letsencrypt['enable'] = false
#nginx['listen_port'] = 443
#nginx['listen_https'] = true
#nginx['ssl_certificate'] = "/etc/gitlab/cert/cert.pem"
#nginx['ssl_certificate_key'] = "/etc/gitlab/cert/key.pem"
gitlab_rails['gitlab_shell_ssh_port'] = 2224
gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = ['openid_connect']
gitlab_rails['omniauth_auto_link_ldap_user'] = false
gitlab_rails['omniauth_block_auto_created_users'] = false
gitlab_rails['omniauth_sync_email_from_provider'] = ['openid_connect']
gitlab_rails['omniauth_auto_sign_in_with_provider'] = ['openid_connect']
gitlab_rails['omniauth_providers'] = [
{
name: "openid_connect",
label: "label",
args: {
name: "openid_connect",
scope: ["openid", "profile", "email"],
response_type: "code",
issuer: "https://login.microsoftonline.com/secret/v2.0",
client_auth_method: "query",
discovery: true,
uid_field: "preferred_username",
pkce: true,
client_options: {
identifier: "secret",
secret: "secret",
redirect_uri: "https://gitlab.mydomain.com/users/auth/openid_connect/callback"
}
}
}
]
ports:
- '5080:80'
#- '5443:443'
- '5022:22'
volumes:
- '/srv/gitlab/cert:/etc/gitlab/cert'
- '/srv/gitlab/config:/etc/gitlab'
- '/srv/gitlab/logs:/var/log/gitlab'
- '/srv/gitlab/data:/var/opt/gitlab'
shm_size: '256m'
如您所见,我一直在尝试在 gitlab 配置中添加和删除 https。您可能还直觉地认为我正在尝试将 oauth 配置到 Azure,因此需要 SSL。我已经让它工作到可以实际验证 Azure 的程度,然后对非安全连接感到难过。一旦我尝试打开 SSL,我甚至无法再通过互联网访问 gitlab。
非常感谢您的帮助!我愿意接受配置更改,但显然我这样做是有原因的,所以简单地删除 nginx 或类似的东西并不是我想要的。