Docker compose和nginx lead-to connect()在连接到上游时失败(111:连接被拒绝)



我在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撰写文件:

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,但这并没有解决我的问题。

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

好吧,和往常一样,当你问一个问题时,你会在5分钟后找到答案:

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

proxy:
port: 4000