119 votos

connect() ha fallado (111: Conexión denegada) mientras se conectaba al upstream

Estoy experimentando Gateway Error 502 al acceder a un archivo PHP en un directorio ( http://domain.com/dev/index.php) Los registros simplemente dicen esto:

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"

Nunca he experimentado esto antes, ¿cómo puedo hacer una solución para este tipo de error de 502 Gateway Error?

Esta es la 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;
#   }
#}

1 votos

Conexión rechazada" significa que el backend no escucha el puerto 9000 o su cola está llena. Este problema está relacionado con el backend itsef. ¿Puede usted telnet localhost 9000? También debe comprobar su backend y los registros de php.

0 votos

Actualicé mi post. No pude telnet a localhost 9000.

0 votos

El mismo error que te estaba enfrentando, Este introduzca aquí la descripción del enlace puede ayudarte

67voto

Quake1TF Puntos 51

Esta respuesta es sólo para aquellos que obtienen un error como

connect() ha fallado (111: Conexión denegada) mientras se conectaba a la línea ascendente, cliente .... fastcgi://[::1]:9000

y vienen del segundo enlace en la búsqueda de Google =)

Reescribe tu configuración de nginx para usar ip, no dns (como 127.0.0.1 en lugar de 'localhost') o elimina el alias ipv6 de /etc/hosts.

6 votos

Me has indicado la dirección correcta. Pensaba que usar sólo listen 80 estaba bien (y hay muchos ejemplos por ahí con eso) pero no pensé que implicara tanto IPv4 ( 127.0.0.1 ) y IPv6 ( [::1] ).

8 votos

Tuve que cambiar de listen 80 default_server a listen 0.0.0.0:80 .

0 votos

¿Puede señalar por qué ¿esto debería ayudar?

62voto

quanta Puntos 31979

Parece que no has iniciado y configurado el backend para Nginx. Inicie php-fpm y añadir lo siguiente a nginx.conf , en http contexto:

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

3 votos

Gracias tío, ha funcionado, no he tenido php-fpm instalado. Salud.

11 votos

Eres un puro genio. No puedo creer que en 1.0000000 millones de guías que he leído sobre esto, NADIE mencione que hay que poner un "listen 127.0.0.1" para habilitar el backend. ¡¡¡Me has salvado de una pesadilla!!!

0 votos

Deberías considerar usar el socket unix. Véalo con netstat -l y ver por /var/run/php5-fpm.sock (la configuración para esto está normalmente en /etc/php5/fpm/pool.d/www.conf. fastcgi_pass unix:<socket>

8voto

KumZ Puntos 11

También tengo errores como este. El problema era que mi backend abstracto hacía referencia a dos servidores. php-fpm era sólo un listado para el enchufe...

# 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;
    }
}

6voto

Tim Puntos 1

Tenía el mismo problema con las peticiones proxies a un servidor Node que escuchaba en el puerto 5000. Las peticiones se producían con 200 OK pero alguna vez 502 Bad Gateway al azar. NGINX mostró el error:

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

Mi solución:

  1. Configurar el servidor HTTP del nodo como escuchar estrictamente para ipv4 incluyendo localhost como host: server.listen(5000, 'localhost');
  2. Se han eliminado las directivas ipv6 listen ( listen [::]:80; o listen [::]:443 ssl default_server; ).
  3. Cambiado el bloque de localización proxy_pass para usar IPs: proxy_pass http://127.0.0.1:5000 (no proxy_pass http://localhost:5000 ).

Espero que esto ayude a alguien.

1voto

Rob Ganly Puntos 1

Tuve el mismo problema y añadiendo la declaración de escucha

listen 127.0.0.1;

me ha funcionado.

Curiosamente, tengo otros bloques de servidores que funcionan muy bien sin esto.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: