Docker-compose 和 nginx 导致 connect() 失败(111:连接被拒绝)而连接到上游错误

时间:2021-06-27 07:23:41

标签: docker nginx docker-compose

我在 docker 容器中运行应用程序和 nginx 并努力让它运行:

这是我的 nginx.conf

server {

    server_name data-mastery.com; # managed by Certbot

    location / {
        proxy_pass          http://shinyproxy:4000;
    }

    listen 443 ssl; # managed by Certbot

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_certificate /etc/nginx/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/nginx/privkey.pem; # managed by Certbot
    include /etc/nginx/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/nginx/ssl-dhparams.pem; # managed by Certbot

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_read_timeout 600s;

    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;

}

server {
    if ($host = data-mastery.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen 80 ;
    listen [::]:80 ;
    server_name data-mastery.com;
    return 404; # managed by Certbot
}

这是我的 docker-compose 文件:

version: "3.7"

services:
  shinyproxy:
    build: ./shinyproxy
    container_name: shinyproxy
    expose:
      - 4000
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "./shinyproxy-logs/server:/log"
      - "./shinyproxy-logs/container:/container-logs"
      - "./shinyproxy:/opt/shinyproxy"
  nginx:
    build: ./nginx
    container_name: nginx
    restart: always
    depends_on:
      - shinyproxy
    ports:
      - "80:80"
      - "443:443"

构建图像工作正常,但是当我运行 docker-compose up 时,nginx 吐出以下错误 nginx | 2021/06/27 07:16:37 [error] 22#22: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 95.157.1.112

我认为这可能会发生,因为 nginx 应该必须等待 Shinyproxy 应用程序,所以我添加了一个 depends-on,但这并没有解决我的问题。

有人知道我的问题在哪里吗?

1 个答案:

答案 0 :(得分:0)

好吧,通常,当您提出问题时,您会在 5 分钟后找到答案:

shinyproxy 应用程序有一个 yaml 文件,您还必须在其中设置一个我必须覆盖的端口:

proxy:
  port: 4000