Apache + PHP-FPM = aléatoire "Erreur d'analyse des en-têtes de script" + Défauts Seg

8

J'ai une configuration PHP-FPM avec Apache 2.4 en utilisant proxy_fcgi, tout fonctionne bien, mais toutes les demandes sur 4-6, Apache renvoie une page vierge. Cela se produit sur mon site principal http://danielhe.com/ , mais pas sur les vhosts du sous-domaine.

Ceci affiche le journal des erreurs d'Apache, [client x] AH01070: Erreur lors de l'analyse des en-têtes de script

Et finalement, parfois Apache segfaults AH00052: erreur de segmentation du signal de sortie du pid 9740 enfant (11)

Je peux reproduire les «en-têtes de script d'erreur d'analyse» très facilement en actualisant la page plusieurs fois, mais la faute de segmentation se produit de manière aléatoire après quelques «en-têtes de script d'erreur d'analyse»

Mise à jour J'ai trouvé un correctif pour les erreurs de segmentation et le WSOD s'est apparemment corrigé. mod_deflate a quelques problèmes, mais cette configuration de la documentation Apache l'a corrigé

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
user9517
la source
2
Vous devez répondre à votre propre question et la marquer comme une réponse acceptée pour que cette question ressemble à une question résolue
regilero

Réponses:

2

La solution était d'utiliser cette configuration

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
user9517
la source
Êtes-vous sûr que ce problème se trouve dans mod_deflate? Des références?
Ça a l'air
@GioMac: Je n'en ai aucune idée - le PO dit que c'est ce qui a résolu le problème dans la question. Je viens de le mettre dans une réponse. Notez que SO nous l'a envoyé et qu'il a été initialement répondu le 9 mars 2012.
user9517
0

Je peux confirmer que la solution ci-dessus a fonctionné pour moi, mais j'ai également dû corriger mes paramètres ProxyPassmatch.

Ancienne config

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

Nouvelle configuration - filtre de réécriture différent, plus le code ci-dessus

<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>
Alauddin
la source
0

Le problème ici est que la réponse de phpList ne remplit pas un package complet. php-fpm rompt prématurément la connexion avec Apache si sa réponse ne remplit pas au moins un tampon. Pour contourner ce problème, vous pouvez passer temporairement à mod_php ou compléter la réponse avec du texte généré de manière aléatoire.

Aeyoun
la source