リバースプロキシを使ったWordPressサイトの構築方法はいくつか紹介されていますが、今日になっていくつか発見があったのでメモがわりに。
コメント投稿者のIPが127.0.0.1になってしまう。
WordPressではコメントの投稿者のIPアドレスを保存してくれますが、このIPアドレスは $_SERVER['REMOTE_ADDR'] を使用しています。
しかしこの環境変数はバックエンドがソケットのアドレスから取得しているので、リバースプロキシの設定等で書き換えることはできません。
エライことにWordPressのCodexでは、そんなあなたのための必殺技も紹介してくれてます。
Plugin API/Filter Reference/pre comment user ip « WordPress Codex
WordPressにはコメント投稿者のIPを書き換えるためのフィルターフックが用意されているので、それを使用して投稿者のIPを正しいIPに書き換えちゃいましょう。
function auto_reverse_proxy_pre_comment_user_ip()
{
if ( !empty($_SERVER['HTTP_X_FORWARDED_FOR']) )
{
$X_FORWARDED_FOR=explode(",", $_SERVER['HTTP_X_FORWARDED_FOR']);
$REMOTE_ADDR=trim($X_FORWARDED_FOR[0]);
} else {
$REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
}
return $REMOTE_ADDR;
}
add_filter ( 'pre_comment_user_ip','auto_reverse_proxy_pre_comment_user_ip');
パーマリンク設定のページがおかしくなる。
リバースプロキシを使ってなくてもApache以外のウェブサーバーを使えば同じなんですけど、パーマリンク設定をうまく認識できなくて、パーマリンク設定のページで以下のようにindex.phpが入ってしまいます。
これはカスタム設定で消してあげれば実害はないんですが、念のため表示されないようにしておきます。
これはTheme-CheckとかPlugin-Checkの開発者の@otto42さんがツイートしてました。
WordPress tip for nginx users; use this somewhere in a plugin to make permalinks not go crazy: add_filter('got_rewrite','__return_true');
任意のプラグイン等に以下の記述を入れておけば実際に回避されました。
add_filter('got_rewrite','__return_true');
最近Nginxネタがかなり増えましたが、この2つは意外と紹介されていないので、ぜひお試しください。

