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

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

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

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.