通过nginx代理的Docker环境导致502 Bad Gateway

问题描述:

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

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

    nginx-proxy_1 | nginx.1 | 2017/08/14 11:44:10 [error] 39#39:* 1672连接()失败(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 | “GET/HTTP/2.0”502 575“ - ”“Mozilla/5.0(Windows NT 10.0; Win64; x64)gitlab.mydomain.com 178.201.120.94 - - [14/Aug/2017:11:44:10 +0000] AppleWebKit/537.36(KHTML,如Gecko)Chrome/60.0.3112.90 Safari/537.36“

    nginx-proxy_1 | nginx.1 | 2017/08/14 11:44:11 [error] 39#39:* 1672 connect()失败(111:Connection refused)连接上游时,客户端: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 /”

我搬运工-撰写文件:

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" 

任何想法呢?谢谢。
编辑:从码头工人 NetworkSettings已检查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" 
      } 
     } 
    } 
+0

docker ps和docker检查你的gitlab容器a nd查看它提取的IP是否正确? –

+0

在gitlab上的docker检查给了我以下值:“网关”:“172.18.0.1”, “IPAddress”:“172.18.0.2”,...对我来说看起来像一个错误? – caiuspb

+0

检查您的案例中有多少网络与gitlab关联? –

此设置为我的作品,也许你可以比较一下,看看,什么是错的:

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

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

+0

谢谢,我会试试看。如果有效,我会发布必要的修改并接受你的答案! – caiuspb

+0

gitlab docker机器上的/ etc/gitlab/trusted-certs中是否有任何文件?我觉得在SSL证书方面存在一些问题。 – caiuspb

+0

没有,它们被放入卷中,然后直接放入容器中的/ etc/gitlab/ssl文件夹中 – metanerd