如何将 gitlab 和 nginx 配置为对 Azure AD 进行 SSL 身份验证的反向代理?

如何将 gitlab 和 nginx 配置为对 Azure AD 进行 SSL 身份验证的反向代理?

我已经为此努力了好几天,我真的希望有好心人能帮忙。

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 或类似的东西并不是我想要的。

相关内容