'gateway' má da nginx 502

Tenho um 502 mau Gateway com nginx quando uso spawn fcgi para spawn php5-cgi.

Uso isto para passar uma instância no início do servidor, usando a seguinte linha em 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
{[[2]}presumivelmente estou a receber o erro porque o spawn-fcgi / php5-cgi morre e não há mais nada a ouvir lá para processar o php.

Não tenho nada nos registos que possa ver em lado nenhum, estou sem ideias (e novo nesta configuração com a nginx)

Author: karthikr, 2010-11-23

13 answers

Executei o meu {[[0]} e a página mostrou a mensagem 502 bad gateway. Isto ajudou-me.

  1. Editar /etc/php5/fpm/pool.d/www.conf
  2. Alteração listen = /var/run/php5-fpm.sock para listen = 127.0.0.1:9000
  3. Certifique-se que a localização é correctamente colocada em nginx.conf
  4. corre sudo service php5-fpm restart
Talvez te ajude.

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

 46
Author: fadil, 2018-04-07 03:59:35

O erro 502 aparece porque o nginx não pode entregar o php5-cgi. Você pode tentar reconfigurar o php5-cgi para usar sockets unix em oposição ao tcp .. em seguida, ajustar a configuração do servidor para apontar para o socket em vez do tcp ...

ps auxww | grep php5-cgi #-- is the process running?  
netstat -an | grep 9000 # is the port open? 
 9
Author: sdolgy, 2011-04-15 11:32:04

Vá para /etc/php5/fpm/pool.d/www.conf e se estiver a usar 'sockets' ou se esta linha não estiver correcta

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

Defina também alguns outros valores: -

listen.owner = www-data
listen.group = www-data
listen.mode = 0660
Não se esqueça de reiniciar php-fpm e nginx. Certifique-se de que está a usar o mesmo proprietário da nginx e nome do grupo.
 8
Author: techvineet, 2014-06-30 07:13:05

Tem de corresponder às configurações do PHP-FPM e do Nginx para comunicar através de 'sockets' ou TCP.

Então vai a /etc/php5/fpm/pool.d/www.conf e procura esta linha:
listen = /var/run/php5-fpm.sock

Então vá para /etc/nginx/nginx.conf

Procura isto:

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

Iguala esses valores e deves estar pronto.

 7
Author: KJ Prince, 2015-02-27 01:18:00

Porto, tive de executar este comando (assumindo que o meu servidor de fcgi está a correr no Porto 4567):

sudo iptables -I INPUT 1 -p tcp --dport 4567 -j ACCEPT
Aviso: isto abrirá o porto 4567 para todo o mundo. Então talvez seja melhor fazer algo assim:
   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

Fazer isto removeu o erro 502 para mim.

 5
Author: tjb, 2012-04-22 15:37:55

Alteração

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

A

fastcgi_pass    unix:/var/run/php5-fpm.sock;
 4
Author: user2816137, 2014-01-18 06:10:41

Quando o fiz {[1] } tive o seguinte erro:

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

Acho que /etc/php-fpm.d/www.conf precisa de saber ao utilizador que o servidor web está a correr como e assume que é apache quando, para nginx, é realmente nginx, e precisa de ser alterado.

 2
Author: neubert, 2013-03-28 16:25:45

Pode fazer com que a nginx ignore as interrupções do cliente usando:

location / {
  proxy_ignore_client_abort on;
}
 2
Author: Meekohi, 2013-05-27 12:56:47
Tive o mesmo problema ao configurar um servidor Ubuntu. Acontece que eu estava tendo o problema devido a permissões incorretas no arquivo socket.

Se você está tendo o problema devido a um problema de permissão, você pode descomentar as seguintes linhas a partir de: /etc/php5/fpm/pool.d / www.conf

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

Alternativamente, embora eu não recomendasse, você pode dar permissões de leitura e escrita para todos os grupos usando o seguinte comando.

sudo chmod go+rw /var/run/php5-fpm.sock
 2
Author: Ali Haris, 2016-08-24 07:31:42
Tente desactivar os módulos xcache ou apc. Parece causar um problema com algumas versões estão salvando objetos para uma variável de sessão.
 1
Author: h0tw1r3, 2014-08-26 17:10:24
Espero que esta dica salve a vida de outra pessoa. No meu caso, o problema era que fiquei sem memória, mas só um pouco, era difícil pensar nisso. Desperdiçaste 3 horas nisso. Eu recomendo a execução:
sudo htop

Ou

sudo free -m

...juntamente com a execução de Pedidos problemáticos no servidor para ver se a sua memória não se esgota. E se ele gosta no meu caso, você precisa criar um arquivo de troca (a menos que você já tem um).

Segui este tutorial para criar um ficheiro swap no Ubuntu Servidor 14.04 e funcionou muito bem.: http://www.cyberciti.biz/faq/ubuntu-linux-create-add-swap-file/

 1
Author: Rav, 2015-02-12 15:40:11
Se você está no Ubuntu, e tudo isso falhou com você, AppArmor é o mais provável de culpar. Aqui está um bom guia como corrigi-lo: https://www.digitalocean.com/community/tutorials/how-to-create-an-apparmor-profile-for-nginx-on-ubuntu-14-04

Resumindo:

vi /etc/apparmor.d/nginx

Ou

sudo aa-complain nginx
sudo service nginx restart
Vê Tudo a funcionar bem... então
sudo aa-logprof

Ainda tinha problemas com a Nginx não ser capaz de ler erros.log, apesar de ter todo o permissões possíveis, incluindo no Apparomor. Acho que tem algo a ver com a ordem das entradas, ou alguma interacção com o passageiro ou o PHP-Fpm... Fiquei sem tempo para resolver isto e voltei para Apache por agora. (Apache executa muito melhor também FYI.)

O AppArmor deixa a Nginx fazer o que quiser se remover o perfil:

 rm /etc/apparmor.d/nginx
 service apparmor reload
Surpreendentemente, mas não é surpreendente, muitos posts sobre corrigir erros de Nginx recorrem a incapacitar completamente SELinux ou a remover o AppArmor. É uma má ideia, porque perdes a protecção de um monte de software. Apenas remover o perfil Nginx é uma maneira melhor de resolver o problema de seus arquivos de configuração. Uma vez que você sabe que o problema não está em seus arquivos de configuração Nginx, você pode tomar o tempo para criar um perfil AppArmor adequado. Sem um perfil AppArmor, especialmente se você executar algo como passageiro também, eu dou ao seu servidor cerca de um mês para se recuperar.
 1
Author: dagelf, 2017-01-11 09:00:28
Configuração semelhante aqui e parece que foi só um erro no meu código. No início do meu aplicativo eu olhei para o URL ofensivo e isso funcionou: echo '<html>test</html>'; exit(); No meu caso, o problema era uma variável não inicializada que só falhou em circunstâncias peculiares.
 0
Author: PJ Brunet, 2012-02-10 21:14:04