nginx:连接到上游时 connect() 失败(111:连接被拒绝)

nginx:连接到上游时 connect() 失败(111:连接被拒绝)

我不断在错误日志中看到以下错误消息,我可以访问所有资源,但我不确定为什么会出现该错误。

错误:

[错误] 13368#0:*449 connect() 连接到上游时失败(111:连接被拒绝),客户端:xxxx,服务器:myserver.com,请求:“GET /stories/mine HTTP/1.1”,上游:“http://[::1]:5000/故事/我的“,主机:“myserver.com”

我的 Nginx 配置

我正在将连接传递给node.js在端口 5000 上运行的集群。看不出我错过了什么?

upstream api {
    server localhost:5000;
}

server {
    listen 80; 
    server_name myserver.com;
    root /home/user/_api;


# Logging 

error_log /home/user/log/api.error.log notice;
    location / {
        proxy_redirect off;
        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;
        proxy_set_header   Host                   $http_host;
        proxy_set_header   X-NginX-Proxy    true;
        proxy_set_header   Connection "";
        proxy_cache one;
        proxy_cache_key sfs$request_uri$scheme;
        proxy_pass         http://api;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

答案1

Nginx 在 IPv6 环回 [::1] 上连接到 nodjs。nodejs 可能只是在 IPv4 上监听。

尝试设置

upstream api {
    server 127.0.0.1:5000;
}
...

答案2

我遇到了同样的错误。我正在使用docker。我发现原因是我使用了127.0.0.1docker容器的名称,但必须使用这个名称。以下是示例:

这是我的 nginx 配置文件中的一个片段,这就是出现错误的原因...failed (111: Connection refused) while connecting to upstream...

location / {
    proxy_pass http://127.0.0.1:5006;
}

这就是我不再使用并且不再出现此错误的方法(来自我的 nginx 配置的片段)。app-ui这是我的带有 React 应用程序的 docker 容器的名称:

location / {
    proxy_pass http://app-ui:5006;
}

相关内容