前提
ECサイトとブログサイトを同一ドメイン別サーバで運用予定です。
全てのリクエストをECサイト側で受取り、URIに/blogが含まれていた場合にのみブログサイトのIPアドレスにリクエストが転送されるようにNginxのReverse Proxyの設定を行っています。
例:
http://example.comを入力 => ECサイト
http://example.com/blog => ECサイトから転送 => ブログサイト
困っていること
この状態でWordpressのサイト自体は問題なく表示されるのですが、管理画面が正常に動作しません。
ドメイン指定(リバースプロキシ経由)、ブログサイトのIPアドレス直指定のいずれの方法でも問題ないので解決策を探しています。
試したこと
- ドメイン指定(リバースプロキシ経由)してアクセスした場合 (http://example.com/blog/wp-admin)
強制的にwp-adminへとリダイレクトが行われる。
そのため、NginxのLocation設定で/blogだけでなく/wp-admin、/wp-loginの場合でもブログサイトのIPに転送する設定にした場合、管理画面のログイン画面へとアクセスすることは出来たものの、正しいメールアドレス、パスワードを入力してもログインできない。
- ブログサイトのIPアドレス直指定してアクセスした場合 (http://xxx.xxx.xxx.xxx/wp-admin)
管理画面の表示、管理画面へのログインは問題ないが、テーマのプレビューを行おうとした場合に"Non-existent changeset UUID."というメッセージが表示され、正常にプレビューを行えない。
Wordpressの設定
管理画面 > 設定 > 一般設定
WordPress アドレス (URL): http://xxx.xxx.xxx.xxx // サーバのIP直指定 サイトアドレス (URL): http://example.com/blog
ECサイト側のNginxの設定
nginx version: nginx/1.11.8
server { listen 80; server_name example.com; location ~ ^/(blog|wp-admin|wp-login) { # REVERSE PROXY 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; proxy_pass http://xxx.xxx.xxx.xxx; // IP直指定 } location / { rewrite ^(.*)$ https://example.com$request_uri permanent; } }
ブログサイト側のWebサーバの設定(Apache)
ConoHaのkusanagi
Apache/2.4.25 (Unix)
<VirtualHost xxx.xxx.xxx.xxx:80> ServerAdmin webmaster@example.com DocumentRoot /home/kusanagi/my_blog/DocumentRoot # ServerName myblog ErrorLog /home/kusanagi/myblog/log/httpd/error.log CustomLog /home/kusanagi/myblog/log/httpd/access.log kusanagi env=!no_log <Directory "/home/kusanagi/myblog/DocumentRoot"> Header append Access-Control-Allow-Origin * Header append Access-Control-Allow-Methods "GET,HEAD,PUT,PATCH,POST,DELETE" Require all granted AllowOverride All Options FollowSymlinks </Directory> <ifModule mod_rewrite.c> RewriteEngine Off RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] </ifModule> </VirtualHost>
回答2件
あなたの回答
tips
プレビュー