【備忘録】Dockerで Apache → PHP-FPM へプロキシする際の注意点

毎月と言っておきながら、おおよそ2か月振りの投稿です。

 

今回は表題の通り、Docker を利用した際に、Apache から PHP-FPM へのプロキシ設定で少しはまったのでそれの備忘録です。

 

▼したかったこと

Apache + PHP-FPM で拡張子が .php のものは PHP-FPM用コンテナへプロキシして処理してほしかった

 

▼起こったこと

コンテナ内に対象のPHPファイルが存在するにもかかわらず、ブラウザからクエリ付きのURIでアクセスすると 404 になる

例:http://exampler.com/test/test_edit.php?id=5

 

▼原因

Apache の confファイル内に記載していた プロキシ設定がよくなかった

 

・うまくいかなかった

<LocationMatch \.(php)$>
ProxyFCGISetEnvIf "true" SCRIPT_FILENAME "/var/www/vhosts/recipe_url.com/public_html%{reqenv:REQUEST_URI}"
SetHandler "proxy:fcgi://recipe_url-app01:9000"
</LocationMatch>

→ApacheのSetHandlerから要求されたスクリプト名が正しく連結できていなかった可能性があり、php-fpm に渡す SCRIPT_FILENAME が不正(空や不完全)になって php-fpm が Primary script unknown を 404 で返した

 

・うまくいった

ProxyPassMatch "^/(.*\.php(/.*)?)$" "fcgi://test-app01:9000/var/www/html/example.com/public_html/$1"

 

ただ、普段の業務では基本的には SetHandler を利用する場合がほとんどなので、潜在的なバグを含む可能性はあります、、、、

この辺りはまた時間があるときに調査しようかなとおもいます!

 

それでは!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA