php-fpm での php 実行は SetHandler で!

WordPress

 このサイトでは、mpm_prefork で apache を起動していたのですが、2.4.27 で mpm_prefork での HTTP/2.0 サポートは廃止されました。仕方なく、mpm_event での使用に切り替えました。その際、php はスレッドセーフでは無いため、apache 組込み型の libphp が使えず php-fpm を設定しました。

 やれやれと暫くアクセスログを見て HTTP/2.0 でちゃんと通信しているし、httpd もセグメント違反で落ちることが無くなったと喜んでいたのもつかの間、海外IPから wordpress のログイン画面へのアクセスが。

 あ~、無駄な事を、403 でお引き取り..になってない!200 返してるし!
で、別の端末から外部アクセスしてみると確かにアクセス出来ます。
なんてこったい!!
ただ、ベイシック認証付きの2段階ログインなのと、管理画面部分は、ディレクトリでアクセス制限を掛けているので、すぐにどうこう言う事はないのですが、総当り攻撃の対象になるの嫌だし、対策を取る事にしました。

 どうも、conf や .htaccess で指定している php ファイルの制御が効いていない様子。php-fpm への繋は、ググった結果、mod_proxy_fcgi を使用して以下の様に設定していました。

更に、色々ぐぐると、こちらにこんな記載が!

実際には mod_proxy_fcgi は以下のような問題があります。

1.(ファイルシステムと関係がないプロクシーなので) DirectoryIndex が効かない
2.(同じ理由で) .htaccess によるディレクトリごとの制御ができない
3.PATH_INFO がおかしい。そのため PHP の PHP_SELF サーバー変数もおかしい

 そりゃダメだわ。と言う事で、ProxyPassMatch での指定をやめ、同サイト様を参考にドキュメントディレクトリに以下を設定して正常にアクセス制限が出来る様になりました。

【参考にさせて頂いたサイト様】
Ubuntu 14.04 の Apache mod_proxy_fcgi で php 動かすのは厳しい話

WordPress

Posted by null-a