我不断在错误日志中看到以下错误消息,我可以访问所有资源,但我不确定为什么会出现该错误。
错误:
[错误] 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.1
docker容器的名称,但必须使用这个名称。以下是示例:
这是我的 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;
}