Vraag connect () failed (111: Connection geweigerd) tijdens het verbinden met upstream


Ik ervaar 502 Gateway fouten bij het openen van een PHP-bestand in een map (http://example.com/dev/index.php). De logs zegt dit eenvoudigweg:

2011/09/30 23:47:54 [error] 31160#0: *35 connect() failed (111: Connection refused) while connecting to upstream, client: xx.xx.xx.xx, server: domain.com, request: "GET /dev/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "domain.com"

Ik heb dit nog nooit eerder meegemaakt. Wat is de oplossing voor dit type 502 Gateway fout?

Dit is de nginx.conf:

user www-data;
worker_processes 4;
pid /var/run/nginx.pid;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}


#mail {
#   # See sample authentication script at:
#   # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#   # auth_http localhost/auth.php;
#   # pop3_capabilities "TOP" "USER";
#   # imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#   server {
#       listen     localhost:110;
#       protocol   pop3;
#       proxy      on;
#   }
# 
#   server {
#       listen     localhost:143;
#       protocol   imap;
#       proxy      on;
#   }
#}

67
2017-09-30 21:59


oorsprong


'Verbinding geweigerd' betekent dat de backend niet naar de poort 9000 luistert of dat de wachtrij ervan is opgevuld. Dit probleem heeft te maken met de backend itsef. Kunt u telnet localhost 9000? Je moet ook je backend en php logs controleren. - Andrew
Mijn bericht bijgewerkt. Ik kon niet telnet naar localhost 9000. - MacMac
Dezelfde fout die ik tegenkwam, dit voer de linkbeschrijving hier in kan jou helpen - Tripathi29


antwoorden:


Het lijkt erop dat u de backend voor Nginx nog niet hebt gestart en geconfigureerd. Begin php-fpm en voeg het volgende toe aan nginx.conf, in de http context:

server {
    listen 127.0.0.1;
    server_name localhost;

    error_log /var/log/nginx/localhost.error_log info;

    root /var/www/localhost/htdocs;

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;

        fastcgi_intercept_errors        on;
        error_page 404 /error/404.php;
    }
}

35
2017-10-01 11:03



Bedankt man, het werkte, ik had het niet php-fpm geïnstalleerd. Proost. - MacMac
Je bent puur geniaal. Ik kan 1.0000.000 miljoen gidsen die ik hierover gelezen niet geloven, NIEMAND zegt dat je een "luister 127.0.0.1" moet plaatsen om backend in te schakelen. Je redde me van een nachtmerrie !!!
u zou moeten overwegen om de unix socket te gebruiken. Bekijk het met netstat -l en zie voor /var/run/php5-fpm.sock (de configuratie hiervoor is normaal in /etc/php5/fpm/pool.d/www.conf. fastcgi_pass unix:<socket> - JohannesM
je zal hebben listen = /var/run/php5-fpm.sock binnen /etc/php5/fpm/pool.d/www.conf. maar je zult willen listen = 9000 en ;listen = /var/run/php5-fpm.sock. als je zoals ik was. (of anders zou je naar een wijze hint van JohannesM kunnen luisteren, waarvan ik veronderstel dat die je met zoiets zou achterlaten fastcgi_pass unix:/var/run/php5-fpm.sock;ergens in jouw nginx.conf) - n611x007
Hetzelfde probleem hebben met php 7.2. Wat bedoel je met het toevoegen van het bestand in de httpd-context? Zou dit een extra conf-bestand zijn in / etc / nginx / sites-available / folder of wat? - PeterKA


Dit antwoord is alleen voor degenen die een dergelijke foutmelding krijgen:

connect () failed (111: Connection geweigerd) tijdens het verbinden met upstream, client ....   FastCGI: // [:: 1]: 9000

Herschrijf je nginx-configuratie om ip te gebruiken, niet dns. Bijvoorbeeld, 127.0.0.1 in plaats van localhost, of verwijder de ipv6 alias van / etc / hosts.


38
2018-02-18 15:58



Jij wees mijn de juiste richting aan! Ik gebruik het gewoon listen 80 was prima (en daar zijn veel voorbeelden van) maar ik dacht niet dat dit zowel IPv4 impliceerde (127.0.0.1) en IPv6 ([::1]) adressen. - glarrain
Ik moest veranderen van listen 80 default_server naar listen 0.0.0.0:80. - givanse
Kunt u erop wijzen waarom dit zou moeten helpen? - kaiser
Omdat de meeste Linux-distributies IPv6 hebben ingeschakeld in netwerken, maar niet alle pakketten die zijn geconfigureerd voor gebruik van ipv6. Naar mijn mening, wanneer nginx de verbinding met stroomopwaarts initieert, retourneert de systeemresolver eerst het ipv6-adres. Php-fpm (centos 7.x) had dergelijke instellingen niet in het vak. En de meeste gidsen leggen alles uit in ipv4-versie, en vergeten ipv6-futures die moeten worden uitgeschakeld of gebruikt. - Quake1TF
Whooah, dus [:: 1] is localhost IPv6-adres! :) Bedankt! - lechup


Heb ook deze fouten gekregen. Probleem was mijn abstracte backend die verwijst naar twee servers. php-fpm was alleen lijst met socket ...

# Upstream to abstract backend connection(s) for php
upstream php {
        server unix:/var/run/php5-fpm.sock;
        #server 127.0.0.1:9000;
} 

server {
    [...]

    location ~ \.php$ {
            # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

            # With php5-fpm:
            fastcgi_pass php;
            fastcgi_index index.php;
            fastcgi_intercept_errors on;
            include fastcgi_params;
    }
}

3
2018-05-22 13:45





In mijn geval was de fout een slechte locatie voor het error_log bestand voor php5.6-fpm service en dus de php-fpm-service startte niet en nginx kon er geen verbinding mee maken. Je kunt het vinden in /etc/php/5.6/fpm/php.ini (u kunt 5.6 vervangen door de versie die u gebruikt).


0
2017-07-30 15:03





Had hetzelfde probleem met proxied requests naar een Node server die luisterde op poort 5000. Verzoeken zouden resulteren met 200 OK maar soms 502 Bad Gateway willekeurig. NGINX toonde de fout:

connect() failed (111: Connection refused) while connecting to upstream, client: ..., server: ...

Mijn oplossing:

  1. Stel node HTTP-server in op luister strikt voor ipv4 door op te nemen localhost als host: server.listen(5000, 'localhost'); 
  2. Alle ipv6 luisterrichtlijnen verwijderd (listen [::]:80; of listen [::]:443 ssl default_server;).
  3. Proxy_pass, locatieblok, gewijzigd om IP's te gebruiken: proxy_pass http://127.0.0.1:5000 (niet proxy_pass http://localhost:5000).

Ik hoop dat dit iemand helpt.


0
2017-07-05 10:05





Ik had hetzelfde probleem en voegde de luisterinstructie toe

listen 127.0.0.1;

werkte voor mij.

Interessant genoeg heb ik andere serverblokken die zonder dit aardig gelukkig lopen!


-3
2017-11-26 22:48



Dit is al drie jaar geleden beantwoord en geaccepteerd. - Sven♦