64 votes

nginx 502 mauvaise passerelle

Je reçois une mauvaise passerelle 502 avec nginx lors de l'utilisation de spawn fcgi pour générer php5-cgi.

J'utilise cela pour étendre une instance sur le serveur démarrer en utilisant la ligne suivante dans 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
 

vraisemblablement, j'obtiens l'erreur car le spawn-fcgi / php5-cgi est mort et il n'y a plus rien qui écoute pour analyser php.

Je n'ai rien dans les journaux que je puisse voir n'importe où, je suis à court d'idées (et nouveau dans cette configuration avec nginx)

62voto

fadil Points 181

J'ai le même problème. J'ai exécuté mon localhost et la page affichant le message 502 bad gateway . Cela m'a aidé:

Aller à /etc/php5/fpm/pool.d/www.conf et éditer la ligne listen = /var/run/php5-fpm.sock à listen = 127.0.0.1:9000

Peut-être que ça va vous aider.

Source de: http://wildlyinaccurate.com/solving-502-bad-gateway-with-nginx-php-fpm

9voto

sdolgy Points 4033

L'erreur 502 apparaît car nginx ne peut pas transférer à php5-cgi. Vous pouvez essayer de reconfigurer php5-cgi pour utiliser des sockets unix au lieu de tcp .. puis ajuster la configuration du serveur pour qu'elle pointe vers le socket au lieu du tcp ...

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

8voto

techvineet Points 2306

Allez à /etc/php5/fpm/pool.d/www.conf et si vous utilisez des sockets ou si cette ligne n'est pas commentée

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

Définissez quelques autres valeurs aussi: -

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

N'oubliez pas de redémarrer php-fpm et nginx. Assurez-vous que vous utilisez le même propriétaire et le même nom de groupe nginx.

5voto

tjb Points 2869

Si vous exécutez un serveur linux, assurez-vous que votre configuration de IPTABLES est correct.

Exécuter sudo iptables -L -n , vous recevrez une liste des ports ouverts. Si il n'y a pas une Règle Iptables pour ouvrir le port desservant la fcgi script, vous recevrez une erreur 502. La Règle Iptables qui ouvre le port correct doivent être indiqués avant toute règle qui rejette catégoriquement tous les paquets (c'est à dire une règle de la forme "REJECT ALL -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable ou similaire)

Sur ma configuration, pour bien ouvrir le port, j'ai eu pour exécuter cette commande (à supposer mon fcgi serveur est en cours d'exécution au port 4567):

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

Attention: Ceci va ouvrir le port 4567 pour le monde entier.

Alors il serait peut-être mieux de faire quelque chose comme ceci:

   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

Ce faisant supprimé l'erreur 502 pour moi.

4voto

user2816137 Points 18

changement

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

à

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X