理解が曖昧な部分がありますので、間違いがありましたらご指摘ください。
よろしくお願いします。
概要
Trustにある新しいサーバーで所属部のWordPressサイトを構築(http://abc.local.kaisha.co.jp)
職場の公開サーバー(http://www.kaisha.co.jp) は管理部が管理していて、我々の部のサイトは管理部のサイトにマウントしてもらう形になる(http://www.kaisha.co.jp/ABC(公開ディレクトリ名)/)
職場の中からだと同一ネットワーク内なのでブラウザからabc.local.kaisha.co.jpに直接アクセスして所属部のWordpressを確認できるが、外部からwww.kaisha.co.jp/ABC/にアクセスしても真っ白になって上手く表示されない。
国内からではなく、海外の支所から表示されないクレームを頂いた。
公開サーバーなのに意味ねー!!
確認したこと
abc.local.kaisha.co.jp でnginxのエラーログを確認する。
serverの値はwww.kaisha.co.jpだが、hostの値がオリジナル?のabc.local.kaisha.co.jpになってしまっている。
それぞれの値は考えてみれば正しいので、職場外のネットワークからabc.local.kaisha.co.jpなんて見える筈もなく真っ白なのかと思った。
対処してみたこと
Wordpressの設定画面でサイトアドレスをwww.kaisha.co.jpに変更
Wordpressアドレスはグレーアウトしていて変更できないのでabc.local.kaisha.co.jpのまま。
Search-Replace-DB-masterツールを使ってWordpressのDB内abc.local.kaisha.co.jpをwww.kaisha.co.jpに変更
参考Qiita
外部からのアクセスは管理部のFirewallを経由する。
Firewallが書き換えてしまうのか、Nignxが書き換えてしまうのか判っていないけどリクエストヘッダのHostをabc.local.kaisha.co.jpからwww.kaisha.co.jpに書き換えてしまえば良いかと思った。
参考サイトでは
proxy_set_header Host $host;
になっているけど$host
の値はログを見るとabc.local.kaisha.co.jpなので
$server_name
を使ってみる。(こっちはwww.kaisha.co.jpになっているし)
location / {
--snip--
proxy_set_header Host $server_name;
--snip--
}
ノートPCを使って、スマホテザリング経由で外部ネットワークからのアクセスを再現。
真っ白の状況が改善されログを見ても暫くエラーが吐き出されないようになった。
海外の支所は時差があるので、これで一日様子見だな・・・