web-dev-qa-db-ja.com

Apache + PHP-FPM =ランダムな「エラー解析スクリプトヘッダー」+セグメントフォールト

私は、proxy_fcgiを使用してApache 2.4でPHP-FPMを設定していますが、すべて正常に動作しますが、4〜6リクエストのすべてで、Apacheは空白のページを返します。これは私のメインサイト http://danielhe.com/ で発生しますが、サブドメインvhostsでは発生しません。

これは、Apacheのエラーログ[クライアントx]を表示しますAH01070:スクリプトヘッダーの解析エラー

そして最終的には、Apache segfaultsがAH00052を時々発生させる:子pid 9740終了信号セグメンテーション違反(11)

「エラー解析スクリプトヘッダー」はページを数回更新することで非常に簡単に再現できますが、「エラー解析スクリプトヘッダー」を数回実行すると、セグメンテーション違反がランダムに発生します。

更新segフォルトの修正を見つけました、そしてWSODは明らかにそれ自体を修正しました。 mod_deflateにはいくつかの問題がありますが、Apacheドキュメントのこの構成により修正されました

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

解決策はこの構成を使用することでした

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
user9517

上記のソリューションが機能したことを確認できますが、ProxyPassmatch設定も修正する必要がありました。

古い構成

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

新しい設定-異なる書き換えフィルターと上記のコード

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

ここでの問題は、phpListからの応答がパッケージ全体を満たさないことです。 php-fpmは、応答が少なくとも1つのバッファを満たさない場合、Apacheとの接続を途中で切断します。回避策として、一時的にmod_phpに切り替えるか、ランダムに生成されたテキストで応答を埋め込むことができます。

0
Aeyoun