ChienomiChienomiWordPressでリバースプロキシを介すると301ループする/X-Forwarded-Forが反映されない301ループリバースプロキシ(DeleGate)の向こうにあるWordPressが301ループするという問題だ。これはWordPressのサイトアドレスをDeleGateがアクセスするものにしておけば問題は発生しない。リバースプロキシを置く以上、バックエンドのアドレスは隠蔽したいわけで、これは望ましくない。MOUNTオプションとしてvhostでなくnvhostを使用することで解決できるかに思えたが、実際は解決しない。問題がHostヘッダにあるのは間違いない。調べると、requested_urlとredirect_urlが異なる場合に301でリダイレクトする、ということがわかる。DeleGateはどうしてもHostヘッダは自分で生成してしまう(スルーしてくれない)ため、Hostを元に生成されるrequested_urlと、サイトアドレスを元に生成されるredirect_urlが一致しない。そこで、起動設定に以下を加えたHTTPCONF="add-qhead:X-Forwarded-Host:%I"だが、WordPressがX-Forwarded-Hostを拾ってくれないのか、それともjournal.reasonset.net:80とポートを含めるためなのか、これだけでは動作しない。"journal.reasonset.net";Hostが違う場合は無視することになってしまうが、まぁ良いとしよう。ちなみに、X-Forwarded-Hostの値を代入しても、やはりポートを含むためなのか、動作しない。X-Forwarded-ForDeleGateでX-Forwarded-Forを設定する方法はHTTPCONF="add-qhead:X-Forwarded-For:%a"であるが、これで正しく動作しない。X-Forwarded-Forの値をとるとどうしてもDeleGateの値になってしまう。ブログを設置しているXDomain側もリバースプロキシをもっていて、そこでX-Forwarded-Forを設定しているようだ。$_SERVER['HTTP_X_FORWARDED_DELEGATE_FOR'];これで実際のアドレスを拾わせることができるようになった。