nginx: connect () ist fehlgeschlagen (111: Verbindung abgelehnt), während eine Verbindung zum Upstream hergestellt wird

16

Die folgende Fehlermeldung wird weiterhin im Fehlerprotokoll angezeigt. Ich kann auf alle Ressourcen zugreifen, bin mir jedoch nicht sicher, warum der Fehler gemeldet wird.

Error:

[Fehler] 13368 # 0: * 449 connect () schlug fehl (111: Verbindung verweigert), während eine Verbindung zum Upstream hergestellt wurde, Client: xxxx, Server: myserver.com, Anforderung: "GET / stories / mine HTTP / 1.1", Upstream: " http: // [:: 1]: 5000 / stories / mine ", host:" myserver.com "

Meine Nginx-Konfig

Ich übergebe die Verbindung an einen node.jsCluster, der auf Port 5000 ausgeführt wird. Sie können nicht sehen, was ich verpasst hätte?

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";
    }
}
Tam2
quelle
Es ist 2015 und ich habe das gleiche Problem. Jedes Mal, wenn eine Websocket-Nachricht gelöscht wird, wird dieser Fehler im Protokoll angezeigt.
r3wt

Antworten:

19

Nginx stellt eine Verbindung zu nodjs im IPv6-Loopback [:: 1] her. nodejs lauscht wahrscheinlich nur auf IPv4.

Versuchen Sie die Einstellung

upstream api {
    server 127.0.0.1:5000;
}
...
Christopher Perrin
quelle
localhost127.0.0.1
Wenn Sie
Irgendwelche Ideen, wenn ich 127.0.0.1 anstelle von localhost habe und dies weiterhin passiert?
Ken,
3
Sie sollten prüfen, ob der Dienst empfangsbereit ist. Versuchen Sie, sudo netstat -pantufestzustellen, ob der Dienst den Port tatsächlich überwacht.
Christopher Perrin
1
@ChristopherPerrin danke für diesen Rat. Es half mir zu erkennen, dass einer meiner Pools seinen Port nicht abhörte, und es stellte sich heraus, dass eine andere Poolkonfiguration denselben Namen wiederverwendete und so ihre Konfiguration überschrieb
Robbie Averill,
@ RobbieAverill schön zu hören, dass diese Antwort immer noch hilfreich ist
Christopher Perrin