Apache + PHP-FPM = casuale “Errore nell'analisi delle intestazioni degli script” + Seg Segults


8

Ho installato PHP-FPM con Apache 2.4 usando proxy_fcgi, tutto funziona bene, ma ognuno in 4-6 richieste, Apache restituisce una pagina vuota. Questo succede sul mio sito principale http://danielhe.com/ , ma non sui vhost secondari.

Questo mostra il log degli errori di Apache, [client x] AH01070: errore durante l'analisi delle intestazioni degli script

E alla fine, a volte Apache segfaults AH00052: pid 9740 figlio segnale di uscita Errore di segmentazione (11)

Posso riprodurre facilmente "Errore durante l'analisi delle intestazioni degli script" aggiornando la pagina un paio di volte, ma l'errore seg si verifica casualmente dopo un paio di "Errore durante l'analisi delle intestazioni degli script"

Aggiornamento Ho trovato una correzione per gli errori seg e apparentemente il WSOD si è corretto. mod_deflate ha alcuni problemi, ma questa configurazione dalla documentazione di Apache l'ha risolto

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

2
Dovresti rispondere alla tua domanda e contrassegnarla come una risposta accettata per far sembrare questa domanda risolta
regilero

Risposte:


2

La soluzione era usare questa configurazione

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

Sei sicuro che il problema sia in mod_deflate? Qualche riferimento? Sembra molto strano ...
GioMac,

@GioMac: Non ne ho idea - l'OP dice che è quello che ha risolto il problema nella domanda. Ho appena inserito una risposta. Si noti che SO
ce l'ha

0

Posso confermare che la soluzione di cui sopra ha funzionato per me, ma ho dovuto correggere anche le mie impostazioni ProxyPassmatch.

Vecchia configurazione

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

Nuova configurazione: filtro di riscrittura diverso, oltre a codice dall'alto

<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>

0

Il problema qui è che la risposta di phpList non riempie un pacchetto completo. php-fpm interrompe prematuramente la connessione con Apache se la sua risposta non riempie almeno un buffer. Per aggirare il problema, puoi passare temporaneamente a mod_php o compilare la risposta con del testo generato casualmente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.