【问题标题】:Docker environment via nginx proxy results in 502 Bad Gateway通过 nginx 代理的 Docker 环境导致 502 Bad Gateway
【发布时间】:2017-08-21 18:50:14
【问题描述】:

我正在使用 nginx-proxy 将子域连接到不同的 docker 服务。由于最后一次图像更新之一,我无法再连接到我的 gitlab 实例。我不知道 nginx-proxy 或 gitlab 更新是否导致了这个问题。当我尝试连接到 gitlab.mydomain.com 时,出现以下错误:

  1. 浏览器:502 错误网关。 nginx/1.13.3
  2. nginx-代理日志:

    nginx-proxy_1 | nginx.1 | 2017/08/14 11:44:10 [错误] 39#39: *1672 connect() 在连接到上游时失败(111:连接被拒绝),客户端:178.201.120.94,服务器:gitlab.mydomain.com,请求: “GET / HTTP/2.0”,上游:“https://172.18.0.2:443/”,主机:“gitlab.mydomain.com”

    nginx-proxy_1 | nginx.1 | gitlab.mydomain.com 178.201.120.94 - - [14/Aug/2017:11:44:10 +0000] "GET / HTTP/2.0" 502 575 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36"

    nginx-proxy_1 | nginx.1 | 2017/08/14 11:44:11 [错误] 39#39: *1672 connect() 失败(111:连接被拒绝)同时连接到上游,客户端:178.201.120.94,服务器:gitlab.mydomain.com,请求: “GET /favicon.ico HTTP/2.0”,上游:“https://172.18.0.2:443/favicon.ico”,主机:“gitlab.mydomain.com”,引用者:“https://gitlab.***.com/”

我的 docker-compose 文件:

version: '2'

services:
   nginx-proxy:
     image: jwilder/nginx-proxy
     ports:
     - "80:80"
     - "443:443"
     volumes:
     - /var/local/nginx/certs:/etc/nginx/certs
     - /etc/letsencrypt:/etc/letsencrypt
     - /var/run/docker.sock:/tmp/docker.sock:ro

   gitlab:
     image: gitlab/gitlab-ce:latest
     ports:
     - "2222:22"
     hostname: 'gitlab.***.com'
     expose:
     - 443
     - 22
     - 80
     - 25
     environment:
     - "VIRTUAL_HOST=gitlab.***.com,www.gitlab.***.com"
     - "VIRTUAL_PORT=443"
     - "VIRTUAL_PROTO=https"
     volumes:
     - "gitlab-config:/etc/gitlab"
     - "gitlab-log:/var/log/gitlab"
     - "gitlab-data:/var/opt/gitlab"
     - "/etc/letsencrypt:/etc/letsencrypt"

对此有什么想法吗?谢谢。
编辑: 来自 docker inspect gitlab 的网络设置:

    "NetworkSettings": {
        "Bridge": "",
        "SandboxID": "...",
        "HairpinMode": false,
        "LinkLocalIPv6Address": "",
        "LinkLocalIPv6PrefixLen": 0,
        "Ports": {
            "22/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "2222"
                }
            ],
            "25/tcp": null,
            "443/tcp": null,
            "80/tcp": null
        },
        "SandboxKey": "/var/run/docker/netns/...",
        "SecondaryIPAddresses": null,
        "SecondaryIPv6Addresses": null,
        "EndpointID": "",
        "Gateway": "",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "IPAddress": "",
        "IPPrefixLen": 0,
        "IPv6Gateway": "",
        "MacAddress": "",
        "Networks": {
            "docker_default": {
                "IPAMConfig": null,
                "Links": null,
                "Aliases": [
                    "abb170528bcc",
                    "gitlab"
                ],
                "NetworkID": "...",
                "EndpointID": "...",
                "Gateway": "172.18.0.1",
                "IPAddress": "172.18.0.2",
                "IPPrefixLen": 16,
                "IPv6Gateway": "",
                "GlobalIPv6Address": "",
                "GlobalIPv6PrefixLen": 0,
                "MacAddress": "02:42:ac:12:00:02"
            }
        }
    }

【问题讨论】:

  • 对你的 gitlab 容器做 docker ps 和 docker 检查,看看它获取的 IP 是否正确?
  • gitlab 上的 docker inspect 给了我以下值: "Gateway": "172.18.0.1", "IPAddress": "172.18.0.2", ... 对我来说似乎是个错误?
  • 在你的情况下检查有多少网络与 gitlab 相关联?
  • 我添加了 docker inspect 的 networksettings 部分。这对你来说足够了吗?这个错误可能与 SSL 加密有关吗?还是一些 ipv6 的东西?
  • 为了让其他人可以测试您的 docker-compose.yml,拥有 gitlab-config 卷的内容会很有用。你能发布一个去掉你私人数据的版本吗?

标签: docker nginx docker-compose gitlab jwilder-nginx-proxy


【解决方案1】:

这个设置对我有用,也许你可以比较一下,找出问题所在:

https://superuser.com/a/1242682/762931

也许是这样: https://gitlab.com/gitlab-org/omnibus-gitlab/issues/1307

【讨论】:

  • 谢谢,我试试看。如果可行,我将发布必要的修改并接受您的回答!
  • 您的 gitlab docker 机器上的 /etc/gitlab/trusted-certs 中是否有任何文件?我觉得 SSL 证书有一些问题。
  • 不,没有,它们被放入卷中,然后直接放入容器中的 /etc/gitlab/ssl 文件夹中
猜你喜欢
  • 1970-01-01
  • 2018-04-15
  • 1970-01-01
  • 2018-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-01
  • 2020-10-29
相关资源
最近更新 更多