表題の通り、nginxのリバースプロキシで別サーバーのWordPressを表示させたいです。
具体的にやりたいことを説明します。
下記の2つのドメインでサイトを運用しています。
global.test、local.test
local.testにはWordPressをインストールしており、local.testのURLでWordPressにアクセス可能です。
global.testには静的なサイトを設置してあります。
どちらもwebサーバーにはnginxを使用しています。
この状態で
https://global.test/localにアクセスした際にlocal.testのサイトを表示させるようにしたいです。
また同時に、local.testに直接アクセスした場合でもサイトを閲覧できるようにしたいです。
取り急ぎプロキシ元のnginxに下記のように設定し、https://global.test/localでlocal.testにアクセスできるようになったのですが、
そこから別のhttps://global.test/local/hogehogeのようなリンクにアクセスするとlocal.test/hogehogeのURLにリダイレクトされてしまいます。
server { listen 443 ssl http2; server_name global.test; ssl_certificate /etc/letsencrypt/....pem; ssl_certificate_key /etc/letsencrypt/....pem; #中略 location ^~ /local { rewrite ^/(.*)/$ /$1 permanent; proxy_redirect off; proxy_set_header Host local.test; 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; proxy_pass http://127.0.0.1/; } }
プロキシ先のWordPressにて下記のようにURLを設定しているのですがそれでもうまくいきません。
define('WP_HOME','https://global.test/local'); define('WP_SITEURL','https://local.test');
WordPressのパーマリンクの構造はカスタム構造にしており下記のように設定しています。
https://global.test/local/%post_id%
個人的にはproxy_set_header Host local.test;
でサーバー変数のホストを書き換えているため、WordPress側でリダイレクトが発生した際に$_SERVER['HTTP_HOST']
に設定されているドメインにリダイレクトされてしまうのかと思いますが、proxy_set_headerを設定しないとそもそもproxy_pass先のipアドレスを名前解決できません。
最終的に下記の状態を作り出すにはどのようにすれば良いでしょうか?
https://global.test/local → local.testのサイトが表示
https://local.test → local.testのサイトが表示
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。