Apache + PHP-FPM = aleatório "Erro ao analisar cabeçalhos de script" + Falhas seg

8

Eu tenho a configuração do PHP-FPM com o Apache 2.4 usando proxy_fcgi, tudo funciona bem, mas cada um em 4-6 solicitações, o Apache retorna uma página em branco. Isso acontece no link do meu site principal, mas não nos vhosts do subdomínio.

Isso mostra o log de erros do Apache, [client x] AH01070: Erro ao analisar cabeçalhos de script

E, eventualmente, às vezes, os segfaults do Apache AH00052: pid filho 9740 sinal de saída Falha de segmentação (11)

Eu posso reproduzir os "cabeçalhos de script de análise de erros" com muita facilidade, atualizando a página algumas vezes, mas a falha seg acontece aleatoriamente após alguns "cabeçalhos de script de análise de erros"

Atualizar Eu encontrei uma correção para as falhas seg, e o WSOD aparentemente se corrigiu. mod_deflate tem alguns problemas, mas essa configuração da documentação do Apache corrigiu isso

SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpeg|jpg|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
    
por Iain 08.03.2012 / 01:01

3 respostas

2

A solução foi usar essa configuração

SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpeg|jpg|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
    
por 26.08.2012 / 21:13
0

O problema aqui é que a resposta do phpList não preenche um pacote completo. O php-fpm interrompe a conexão com o Apache prematuramente se sua resposta não preencher pelo menos um buffer. Como uma solução alternativa, você pode alternar temporariamente para mod_php ou preencher a resposta com algum texto gerado aleatoriamente.

    
por 13.08.2016 / 19:06
0

Posso confirmar que a solução acima funcionou para mim, mas também tive que corrigir minhas configurações de ProxyPassmatch.

Configuração antiga

<IfModule proxy_module>
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/home/YOURDOMAIN/public_html/$1
</IfModule>

Nova configuração - diferente filtro de reescrita, além do código acima

<IfModule proxy_module>
ProxyPassMatch ^(.*\.php)$ fcgi://127.0.0.1:9000/home/YOURDOMAIN/public_html/$1
</IfModule>

<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
...code from above
</IfModule>
    
por 25.06.2015 / 13:40