DelegateからNginxへのリバースプロキシ切り替え
site-address
- TOP
- Old Archives
- DelegateからNginxへのリバースプロキシ切り替え
現状ではDelegateをリバースプロキシとして利用しているのだが、サーバー変更に伴ってNginxへと変更することとなった。
そこでプロキシ設定を行ったが、そのように動作しなかった。
server{
server_name journal.reasonset.net;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://path.to.blog/;
}
}
これは少し複雑な問題のようだ。
WordPress上でサイトアドレスとしてjournal.reasonset.net
を設定した場合、301ループとなりjournal.reasonset.net
がリクエストされ続ける。
サイトアドレスを設定しなければDelegateでは動作する。
一方で、Nginxでは「無効なURLです」とrejectされてしまう。
これは恐らくDelegate上でHost
ヘッダを明示していないため、値としてプロキシが要求する際のpath.to.blog
が使われるのに対して、Nginxでは明示しなくてもjournal.reasonset.net
を要求するという違いからくるのだろう。
解決方法はふたつある。
ひとつはWordPress上でサイトアドレスにjournal.reasonset.net
を設定し、
Delegateにおいても
HTTPCONF=kill-qhead:Host
HTTPCONF=add-qhead:Host:journal.reasonset.net
とするか、もしくはNginx上で
proxy_set_header Host path.to.blog;
とするかだ。