Saltar al contenido

PHP-FPM y Nginx: 502 Bad Gateway

Solución:

Si alguien encuentra esta página y encuentra el mismo problema que yo tuve, encontré la respuesta aquí.

Para aquellos de ustedes que no pueden molestarse en hacer clic y resolverlo por sí mismos …;)

La condición:

El servidor Ubuntu o Debian con NGINX y PHP 5.3 funciona bien, pero la actualización de PHP a 5.4 da 502 errores Bad Gateway. Buscando servicios que se ejecutan en el puerto 9000 (normalmente netstat -lp o similar) no devuelve nada.

La solución:

Abierto /etc/php5/fpm/pool.d/www.conf y anote el parámetro ‘escuchar’ (en mi caso /var/run/php5-fpm.sock):

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses on a
;                            specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = /var/run/php5-fpm.sock

y reemplace la variable fastcgi_pass en su vhost con la ubicación que acaba de anotar.

Entonces, esta configuración de muestra de Symfony2 (tomada de aquí):

  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  location ~ ^/(app|app_dev).php(/|$) {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_split_path_info ^(.+.php)(/.*)$;
    include fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param  HTTPS              off;
  }

se convierte en esto:

  # pass the PHP scripts to FastCGI server at /var/run/php5-fpm.sock
  location ~ ^/(app|app_dev).php(/|$) {
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_split_path_info ^(.+.php)(/.*)$;
    include fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param  HTTPS              off;
  }

Luego reinicia nginx:

sudo /etc/init.d/nginx restart

Nota: reemplazar ~ ^/(app|app_dev).php(/|$) { con ~ ^/index.php(/|$) { si no estás en SF2 **

Espero que esto le ahorre a alguien un poco de tiempo 🙂

Editar

Por supuesto, puede cambiar el listen = /var/run/php5-fpm.sock para listen = 127.0.0.1:9000 en /etc/php5/fpm/pool.d/www.conf luego reinicie php5-fpm (lo que le evitaría tener que cambiar sus vhosts), pero debe asumir que cambiaron php5-fpm para que se ejecute a través de un socket en lugar de escuchar en el puerto 9000 por una razón.

Editar2

Si sigues experimentando el error 502, consulta esta respuesta.

Intente establecer estos valores, resuelve el problema en fast-cgi

fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;

Hice todos estos ajustes similares, pero de vez en cuando recibía errores 501/502 (a diario).

Esta es mi configuración en /etc/php5/fpm/pool.d/www.conf para evitar errores nginx 501 y 502… El servidor tiene 16 Gb de RAM. Esta configuración es para un servidor RAM de 8 Gb, así que …

sudo nano /etc/php5/fpm/pool.d/www.conf

luego establezca los siguientes valores para

pm.max_children = 70
pm.start_servers = 20
pm.min_spare_servers = 20
pm.max_spare_servers = 35
pm.max_requests = 500

Después de estos cambios, reinicie php-fpm

sudo service php-fpm restart
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *