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


16

我一直在错误日志中看到以下错误消息,我可以访问所有资源,但是不确定为什么要标记错误。

错误:

[错误] 13368#0:* 449连接到上游时,connect()失败(111:连接被拒绝),客户端:xxxx,服务器:myserver.com,请求:“ GET / stories / mine HTTP / 1.1”,上游:“ http:// [:: 1]:5000 / stories / mine “,主持人:” 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";
    }
}

是2015年,我遇到了同样的问题。每当出现websocket消息时,此错误就会出现在日志中。
r3wt 2015年

Answers:


19

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

尝试设定

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

对于那些感到困惑的人,请更改localhost127.0.0.1
kouton 2015年

任何想法,如果我有127.0.0.1而不是localhost并且一直在发生?

3
您应该检查服务是否正在监听。尝试sudo netstat -pantu查看服务是否实际上在端口上侦听。
Christopher Perrin

1
@ChristopherPerrin感谢您的建议。它帮助我意识到我的一个池没有监听其端口,事实证明是因为另一个池配置重新使用了相同的名称,因此覆盖了其配置
Robbie Averill,2016年

@RobbieAverill很高兴听到这个答案仍然有帮助
Christopher Perrin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.