前提・実現したいこと
以下の構成でサーバーを構築したいです。
・トップページ
http:///
・Wordpress
http:///blog/
環境を切り分けるためにDockerを使用し、[1]を参考にリバースプロキシを設定しています。(docker-compose.ymlは下記に記載しています)
トップページは正常に表示されますが、Wordpressのリソースがトップページ用のコンテナにリダイレクトされ、404になってしまいます。
Wordpressが正常に読み込まれるよう、適切なリダイレクト設定をご教授いただければ幸いです。
よろしくお願いいたします。
[1] 実践編ーDockerを使ってnginxでリバースプロキシを立ててみる
発生している問題・エラーメッセージ
トップページ(http:///)は正常に表示されます。
Wordpress(http:///blog/)は、cssなどhtml以外のリソースがtop-containerで処理され、404が返されています。
$ sudo docker-compose up (略) blog-container | 118.86.186.20 - - [16/May/2021:05:26:57 +0000] "GET /blog/ HTTP/1.0" 200 3973 "http://********/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0" rev-proxy-container | 118.86.186.20 - - [16/May/2021:05:26:57 +0000] "GET /blog/ HTTP/1.1" 200 3654 "http://********/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0" top-container | 2021/05/16 05:26:57 [error] 24#24: *13 open() "/usr/share/nginx/html/wp-includes/css/dist/block-library/style.min.css" failed (2: No such file or directory), client: 172.20.0.4, server: localhost, request: "GET /wp-includes/css/dist/block-library/style.min.css?ver=5.7.2 HTTP/1.0", host: "top-server", referrer: "http://********/blog/" top-container | 172.20.0.4 - - [16/May/2021:05:26:57 +0000] "GET /wp-includes/css/dist/block-library/style.min.css?ver=5.7.2 HTTP/1.0" 404 154 "http://********/blog/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0" "-" (略)
該当のソースコード
ファイル構成
docker-compose.yml top - index.html blog - wp-config.php, index.php, ... reverse-proxy - nginx.conf
docker-compose.yml
yaml
1version: '3' 2 3services: 4 top-server: 5 image: nginx 6 container_name: 'top-container' 7 volumes: 8 - ./top:/usr/share/nginx/html 9 10 db: 11 container_name: 'wp-db-container' 12 image: mysql:5.7 13 volumes: 14 - db_data:/var/lib/mysql 15 restart: always 16 environment: 17 MYSQL_ROOT_PASSWORD: ******** 18 MYSQL_DATABASE: ******** 19 MYSQL_USER: ******** 20 MYSQL_PASSWORD: ******** 21 22 wordpress: 23 container_name: 'blog-container' 24 depends_on: 25 - db 26 image: wordpress:latest 27 restart: always 28 volumes: 29 - ./blog:/var/www/html 30 environment: 31 WORDPRESS_DB_HOST: db:3306 32 WORDPRESS_DB_USER: ******** 33 WORDPRESS_DB_PASSWORD: ******** 34 35 36 reverse-proxy: 37 container_name: 'rev-proxy-container' 38 image: nginx 39 volumes: 40 - ./reverse-proxy/nginx.conf:/etc/nginx/nginx.conf 41 ports: 42 - 80:80 43 44volumes: 45 db_data: 46
nginx.conf
events { worker_connections 16; } http { server { listen 80; server_name ********; location / { proxy_pass http://top-server; proxy_redirect off; } location /blog/ { proxy_set_header Host $host:$proxy_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://wordpress; proxy_redirect off; } } }
試したこと
wp-config.php先頭にWP_HOME, WP_SITEURLを追加
php
1define('WP_HOME', 'http://********/blog'); 2define('WP_SITEURL', 'http://********/blog');
→ http://********/blogへのアクセスで、301リダイレクトがループした。
補足情報(FW/ツールのバージョンなど)
bash
1$ docker --version 2Docker version 20.10.6, build 370c289 3$ docker-compose --version 4docker-compose version 1.29.1, build c34c88b2
Indigo VPS
Ubuntu 20.04
あなたの回答
tips
プレビュー