web-dev-qa-db-fra.com

échec de la connexion () (111: connexion refusée) lors de la connexion à l'amont

Je vis 502 Gateway erreurs lors de l'accès à un fichier PHP dans un répertoire (http://example.com/dev/index.php). Les journaux indiquent simplement ceci:

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"

Je n'ai jamais vécu ça auparavant. Quelle est la solution pour ce type de 502 Gateway Erreur?

C'est le 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/*;
}
96
MacMac

Il semble que vous n'ayez pas démarré et configuré le backend pour Nginx. Début php-fpm et ajoutez ce qui suit à nginx.conf, dans le contexte http:

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;
    }
}
52
quanta

Cette réponse est uniquement pour ceux qui obtiennent une erreur comme celle-ci:

connect () a échoué (111: connexion refusée) lors de la connexion en amont, au client .... fastcgi: // [:: 1]: 9000

Réécrivez votre configuration nginx pour utiliser ip, pas dns. Par exemple, 127.0.0.1 au lieu de localhost, ou supprimez l'alias ipv6 de/etc/hosts.

53
Quake1TF

Vous avez aussi des erreurs comme ça. Le problème était mon backend abstrait référençant deux serveurs. php-fpm ne listait que pour 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;
    }
}
5
KumZ

Nous avons eu le même problème avec les requêtes mandatées vers un serveur Node écoutant sur le port 5000. Les requêtes résultaient avec 200 OK Mais parfois 502 Bad Gateway Au hasard. NGINX a montré l'erreur:

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

Ma solution:

  1. Définissez le serveur HTTP du nœud sur écouter strictement pour ipv4 en incluant localhost en tant qu'hôte: server.listen(5000, 'localhost');
  2. Suppression de toutes les directives d'écoute ipv6 (listen [::]:80; Ou listen [::]:443 ssl default_server;).
  3. Bloc d'emplacement proxy_pass modifié pour utiliser les adresses IP: proxy_pass http://127.0.0.1:5000 (Pas proxy_pass http://localhost:5000).

J'espère que cela aide quelqu'un.

1
Niko Solihin

Dans mon cas, l'erreur était un mauvais emplacement pour le fichier error_log pour le service php5.6-fpm et donc le service php-fpm n'a pas pu démarrer et nginx n'a pas pu se connecter à it. Vous pouvez le trouver dans /etc/php/5.6/fpm/php.ini (vous pouvez remplacer 5.6 par la version que vous utilisez).

0
George Donev