繁体   English   中英

Docker 上的 Nginx(连接到上游时拒绝连接)

[英]Nginx on Docker (Connection Refused while connecting to upstream)

当我尝试连接到我的反向代理时,我不断收到此错误:

2022/09/20 01:06:43 [错误] 25#25: *5 connect() 失败(111:连接被拒绝),同时连接到上游,客户端:xxxx,服务器:localhost,请求:“GET /sdr_user HTTP/ 1.1”,上游:“http://127.0.0.1:59524/values”,主机:“localhost:9191”

2022/09/20 01:06:43 [警告] 25#25: *5 上游服务器在连接到上游时暂时禁用,客户端:xxxx,服务器:localhost,请求:“GET /sdr_user HTTP/1.1”,上游:“ http://127.0.0.1:59524/values”,主机:“localhost:9191”

2022/09/20 01:06:43 [错误] 25#25: *5 connect() 失败(111:连接被拒绝),同时连接到上游,客户端:xxxx,服务器:localhost,请求:“GET /sdr_user HTTP/ 1.1”,上游:“http://127.0.0.1:59524/values”,主机:“localhost:9191”

2022/09/20 01:06:43 [警告] 25#25: *5 上游服务器在连接到上游时暂时禁用,客户端:xxxx,服务器:localhost,请求:“GET /sdr_user HTTP/1.1”,上游:“ http://127.0.0.1:59524/values”,主机:“localhost:9191”

我尝试过搜索,它说要定义我在 default.conf 文件中已经拥有的上游服务器,如下所示:

upstream api_server {
    server localhost:59524;
}

server {
    listen 80;

    server_name localhost;

    location /sdr_user{
        proxy_pass http://api_server/values;
    }
}

我的反向代理位于另一个容器中,与我的其他项目分开。 但是,当我直接访问 localhost:59524 时,我可以毫无问题地访问该链接。

我是否缺少其他配置?

当您使用容器时, localhost没有任何意义。

If you have a docker-compose.yml with 2 services: nginx and the application, then your nginx sees the application by the name of the service defined in docker-compose.yml

例子:

docker-compose.yml

version: '3'

services:
  svc1:
    image: nginx
    ports:
    - "8080:80"
    volumes:
    - "./default.conf:/etc/nginx/conf.d/default.conf:ro"

  svc2:
    image: <some app>

(无需为 svc2 暴露端口)

您的default.conf应如下所示:

upstream api_server {
    server svc2:59524;
}

server {
    listen 80;

    server_name localhost;

    location /sdr_user{
        proxy_pass http://api_server/values;
    }
}

(假设您的应用程序在容器内的端口 59524 上运行)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM