fruitywifi error enable crunchyroll bad php nginx fastcgi

error - nginx php 502 bad gateway



nginx 502 bad gateway (13)

Configuración similar aquí y parece que fue solo un error en mi código. Al comienzo de mi aplicación, busqué la URL infractora y funcionó: echo ''<html>test</html>''; exit(); echo ''<html>test</html>''; exit();

En mi caso, resulta que el problema fue una variable no inicializada que solo falló en circunstancias especiales.

Obtengo un 502 Bad Gateway con nginx cuando uso spawn fcgi para spawn php5-cgi.

Lo uso para abarcar una instancia en el inicio del servidor usando la siguiente línea en rc.local

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

presumiblemente estoy obteniendo el error porque el spawn-fcgi / php5-cgi muere y no hay nada escuchando allí para analizar php.

No encuentro nada en los registros que pueda ver en ningún lado, me he quedado sin ideas (y nuevo en esta configuración con nginx)


Cuando hice sudo /etc/init.d/php-fpm start recibí el siguiente error:

Starting php-fpm: [28-Mar-2013 16:18:16] ERROR: [pool www] cannot get uid for user ''apache''

Supongo que /etc/php-fpm.d/www.conf necesita saber en qué usuario se está ejecutando el servidor web y asume que es apache cuando, para nginx, en realidad es nginx y necesita ser modificado.


Debe coincidir con la configuración de PHP-FPM y Nginx para comunicarse a través de sockets o TCP.

/etc/php5/fpm/pool.d/www.conf a /etc/php5/fpm/pool.d/www.conf y busque esta línea:

listen = /var/run/php5-fpm.sock

Luego ve a /etc/nginx/nginx.conf

Busca esto:

upstream php { server unix:/var/run/php5-fpm.socket; }

Haga coincidir esos valores y debería estar todo listo.



El error 502 aparece porque nginx no puede transferirse a php5-cgi. Puede intentar reconfigurar php5-cgi para usar sockets Unix en lugar de tcp ... luego ajuste la configuración del servidor para apuntar al socket en lugar de al tcp ...

ps auxww | grep php5-cgi #-- is the process running? netstat -an | grep 9000 # is the port open?


Espero que este consejo salve la vida de otra persona. En mi caso, el problema fue que me quedé sin memoria, pero solo ligeramente, era difícil pensarlo. Perdió 3 horas en eso. Recomiendo ejecutar:

sudo htop

o

sudo free -m

... junto con ejecutar solicitudes problemáticas en el servidor para ver si su memoria no se agota. Y si le gusta en mi caso, necesita crear un archivo de intercambio (a menos que ya tenga uno).

He seguido este tutorial para crear un archivo swap en Ubuntu Server 14.04 y funcionó perfectamente: http://www.cyberciti.biz/faq/ubuntu-linux-create-add-swap-file/


Intente deshabilitar los módulos xcache o apc. Parece causar un problema con algunas versiones que están guardando objetos en una variable de sesión.


Puedes hacer que nginx ignore el aborto del cliente usando:

location / { proxy_ignore_client_abort on; }


Si ejecuta un servidor Linux, asegúrese de que su configuración de IPTABLES sea correcta.

Ejecute sudo iptables -L -n , recibirá una lista de sus puertos abiertos. Si no hay una Regla Iptables para abrir el puerto que sirve el script fcgi, recibirá un error 502. La regla Iptables que abre el puerto correcto se debe enumerar antes de cualquier regla que rechace categóricamente todos los paquetes (es decir, una regla de la forma "REJECT ALL -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable o similar)

En mi configuración, para abrir correctamente el puerto, tuve que ejecutar este comando (supongamos que mi servidor fcgi se está ejecutando en el puerto 4567):

sudo iptables -I INPUT 1 -p tcp --dport 4567 -j ACCEPT

ADVERTENCIA: Esto abrirá el puerto 4567 a todo el mundo.

Entonces, sería mejor hacer algo como esto:

sudo iptables-save >> backup.iptables sudo iptables -D INPUT 1 #Delete the previously entered rule sudo iptables -I INPUT 1 -p tcp --dport 8080 -s localhost -j ACCEPT # Add new rule

Hacer esto eliminó el error 502 para mí.


Si estás en Ubuntu, y todo lo anterior te ha fallado, es muy probable que AppArmor sea el culpable.

Aquí hay una buena guía sobre cómo solucionarlo: https://www.digitalocean.com/community/tutorials/how-to-create-an-apparmor-profile-for-nginx-on-ubuntu-14-04

Larga historia corta:

vi /etc/apparmor.d/nginx

O

sudo aa-complain nginx sudo service nginx restart

Ver todo funcionando bien ... entonces

sudo aa-logprof

Todavía tenía problemas con Nginx al no poder leer error.log, aunque tenía todos los permisos posibles, incluso en Apparomor. Supongo que tiene algo que ver con el orden de las entradas, o alguna interacción con Passenger o PHP-Fpm ... Me he quedado sin tiempo para solucionar este problema y he vuelto a Apache por el momento. (Apache funciona mucho mejor también FYI.)

AppArmor solo deja que Nginx haga lo que quiera si solo eliminas el perfil:

rm /etc/apparmor.d/nginx service apparmor reload

Sorprendentemente, pero no es sorprendente, muchas publicaciones sobre la corrección de errores de Nginx recurren a SELinux completamente incapacitante o a la eliminación de AppArmor. Esa es una mala idea porque pierdes protección de un montón de software. Solo eliminar el perfil de Nginx es una mejor manera de solucionar sus archivos de configuración. Una vez que sepa que el problema no está en sus archivos de configuración de Nginx, puede tomarse el tiempo para crear un perfil de AppArmor adecuado.

Sin un perfil de AppArmor, especialmente si también ejecutas algo así como Passenger, le doy a tu servidor alrededor de un mes para que te respalden.


Tuve el mismo problema al configurar un servidor Ubuntu. Resulta que estaba teniendo el problema debido a permisos incorrectos en el archivo socket.

Si tiene el problema debido a un problema de permiso, puede descomentar las siguientes líneas de: /etc/php5/fpm/pool.d/www.conf

listen.owner = www-data listen.group = www-data listen.mode = 0660

Alternativamente, aunque no recomendaría, puede otorgar permisos de lectura y escritura a todos los grupos mediante el siguiente comando.

sudo chmod go+rw /var/run/php5-fpm.sock


Vaya a /etc/php5/fpm/pool.d/www.conf y si está usando sockets o esta línea no está comentada

listen = /var/run/php5-fpm.sock

Establezca un par de otros valores también: -

listen.owner = www-data listen.group = www-data listen.mode = 0660

No te olvides de reiniciar php-fpm y nginx. Asegúrese de estar usando el mismo nombre de propietario y grupo de nginx.


cambio

fastcgi_pass unix:/var/run/php-fpm.sock;

a

fastcgi_pass unix:/var/run/php5-fpm.sock;