nginx: connect () nie powiodło się (111: odmowa połączenia) podczas łączenia z nadrzędnym

16

W dzienniku błędów wciąż widnieją poniższe komunikaty o błędach, mogę uzyskać dostęp do wszystkich zasobów, ale nie jestem pewien, dlaczego błąd jest oznaczany.

błąd:

[błąd] 13368 # 0: * 449 połączenie () nie powiodło się (111: połączenie odrzucone) podczas łączenia z nadrzędnym klientem: xxxx, serwer: myserver.com, żądanie: „GET / opowiadania / mój HTTP / 1.1”, nadrzędny: „ http: // [:: 1]: 5000 / opowiadania / moje ”, host:„ myserver.com ”

Moja konfiguracja Nginx

Przekazuję połączenie do node.jsklastra działającego na porcie 5000. Nie widzisz tego, co bym przegapił?

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
źródło
Jest rok 2015 i mam ten sam problem. za każdym razem, gdy upuszczana jest wiadomość websocket, ten błąd pojawia się w dzienniku.
r3wt

Odpowiedzi:

19

Nginx łączy się z nodjs na sprzężeniu zwrotnym IPv6 [:: 1]. nodejs prawdopodobnie właśnie słucha na IPv4.

Spróbuj ustawić

upstream api {
    server 127.0.0.1:5000;
}
...
Christopher Perrin
źródło
Tym, którzy są zdezorientowani, zmień localhostna127.0.0.1
kouton
Wszelkie pomysły, jeśli mam 127.0.0.1 zamiast localhost i tak się dzieje?
Ken
3
Powinieneś sprawdzić, czy usługa nasłuchuje. Spróbuj sudo netstat -pantusprawdzić, czy usługa nasłuchuje na porcie.
Christopher Perrin
1
@ChristopherPerrin dziękuje za tę radę. Pomogło mi to uświadomić sobie, że jedna z moich pul nie nasłuchuje na jego porcie, a okazało się, że inna konfiguracja puli ponownie używa tej samej nazwy, więc nadpisuje swoją konfigurację
Robbie Averill
@RobbieAverill miło słyszeć, że ta odpowiedź jest nadal pomocna
Christopher Perrin