サイト運営を目標に現在勉強中です。
浅学ゆえの未熟な質問、ご容赦ください。
ご助力いただけますと大変助かります。
前提・実現したいこと
- リストバーチャルホストによるマルチドメインサイトのウェブサーバのひとつをWordPressで構築したい
状況
リバースプロキシ用のコンテナを立ち上げて、ウェブサーバ用のコンテナをそれぞれバーチャルホストしてサブドメインで表示させています。
現在、WordPressのコンテナのみ、502エラーで表示ができません。
リバースプロキシのコンテナ内で振り分けを確認すると、うまくいっているコンテナとそうでないコンテナの差が
「server 172.18.0.XX:80;」「server 127.0.0.1 down;」であることがわかりました。
172.18.0.XXは調べたところdockerの内部IPで、127.0.0.1はlocalhostのIPアドレスなので、
WordPressのコンテナについても、dockerの内部IPアドレスを読み込めるようになれば、うまくいくのではないかと思い、試行錯誤しています。
nginx.confの設定でどうにかできるところなのかな、と思い、色々設定を変更してみたのですが、うまくいかないため、
設定方法をご教授いただけると助かります。
docker exec -it nginx-proxy /bin/bash ls -l /etc/nginx/conf.d/default.conf cat /etc/nginx/conf.d/default.conf
/etc/nginx/conf.d/default.conf
一部抜粋
# hoge.com upstream hoge.com { ## Can be connected with "common_link" network # primary server 172.18.0.8:80; } server { server_name hoge.com; listen 80 ; access_log /var/log/nginx/access.log vhost; return 301 https://$host$request_uri; } server { server_name hoge.com; listen 443 ssl http2 ; access_log /var/log/nginx/access.log vhost; ssl_session_timeout 5m; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; ssl_certificate /etc/nginx/certs/hoge.com.crt; ssl_certificate_key /etc/nginx/certs/hoge.com.key; add_header Strict-Transport-Security "max-age=31536000" always; location / { proxy_pass http://hoge.com; } } # test01.hoge.com upstream test01.hoge.com { ## Can be connected with "common_link" network # test01 server 127.0.0.1 down; } server { server_name test01.hoge.com; listen 80 ; access_log /var/log/nginx/access.log vhost; return 301 https://$host$request_uri; } server { server_name test01.hoge.com; listen 443 ssl http2 ; access_log /var/log/nginx/access.log vhost; ssl_session_timeout 5m; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; ssl_certificate /etc/nginx/certs/hoge.com.crt; ssl_certificate_key /etc/nginx/certs/hoge.com.key; add_header Strict-Transport-Security "max-age=31536000" always; location / { proxy_pass http://test01.hoge.com; } } # aaa.hoge.com upstream xn--cksr0ah2kx6h781e.hoge.com { ## Can be connected with "common_link" network # quinary server 172.18.0.11:80; } server { server_name aaa.hoge.com; listen 80 ; access_log /var/log/nginx/access.log vhost; return 301 https://$host$request_uri; } server { server_name aaa.hoge.com; listen 443 ssl http2 ; access_log /var/log/nginx/access.log vhost; ssl_session_timeout 5m; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; ssl_certificate /etc/nginx/certs/hoge.com.crt; ssl_certificate_key /etc/nginx/certs/hoge.com.key; add_header Strict-Transport-Security "max-age=31536000" always; location / { proxy_pass http://aaa.hoge.com; } }
参考情報
[リバースプロキシ用のdocker-compose.yml ]
/etc/vps/portal/docker-compose.yml
version: '2'
services: nginx-proxy: restart: always image: jwilder/nginx-proxy container_name: nginx-proxy ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/tmp/docker.sock:ro - /etc/nginx/ssl:/etc/nginx/dhparam:ro - /etc/letsencrypt/live/hoge.com:/etc/letsencrypt/live/hoge.com:ro - /etc/letsencrypt/archive/hoge.com:/etc/letsencrypt/archive/hoge.com:ro - /etc/vps/portal/certs:/etc/nginx/certs:ro networks: - common_link networks: common_link: external: name: common_link
[nginx.conf]
試してみたnginx.conf設定ファイル
server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; location / { # root /usr/share/nginx/html; root /var/www/html/test01; index index.php; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { # root /usr/share/nginx/html; root /var/www/html/test01; } location ~* .(gif|jpe?g|png|ico)$ { add_header Cache-Control "s-maxage=86400, public"; root /var/www/html/test01; } location ~ .php$ { root /var/www/html/test01; try_files $uri =404; fastcgi_split_path_info ^(.+.php)(/.+)$; fastcgi_pass wordpress01:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ .php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ .php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /.ht { # deny all; #} }
追記
[wordpress用のxml]
設定を変えていくつか試してみたので、そのうちのひとつを記載いたします…
version: '3' services: mariadb: image: mariadb:latest container_name: mariadb volumes: - /etc/vps/portal/mysql:/var/lib/mysql environment: - MYSQL_ROOT_HOST=${MYSQL_ROOT_HOST} - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - MYSQL_USER=${MYSQL_USER} - MYSQL_PASSWORD=${MYSQL_PASSWORD} - MYSQL_DATABASE=${MYSQL_DATABASE} env_file: .env networks: - common_link wordpress01: image: wordpress:php7.4-fpm container_name: wordpress01 environment: - WORDPRESS_DB_HOST=${WORDPRESS_DB_HOST} - WORDPRESS_DB_USER=${WORDPRESS_DB_USER} - WORDPRESS_DB_PASSWORD=${WORDPRESS_DB_PASSWORD} - WORDPRESS_DB_NAME=${WORDPRESS_DB_NAME} env_file: .env depends_on: - mariadb volumes: - /etc/vps/portal/portal/public:/var/www/html restart: always networks: - common_link test01: restart: always image: nginx build: context: . dockerfile: Dockerfile container_name: test01 environment: - VIRTUAL_HOST=test01.hoge.com volumes: - /etc/vps/portal/test01/conf/default.conf:/etc/nginx/nginx.conf - /etc/vps/portal/public:/var/www/html depends_on: - wordpress01 networks: - common_link networks: common_link: external: name: common_link
[.env]
# mariadb MYSQL_ROOT_HOST=db MYSQL_ROOT_PASSWORD=password MYSQL_USER=root MYSQL_PASSWORD=password MYSQL_DATABASE=wordpress # wordpress WORDPRESS_DB_HOST=db WORDPRESS_DB_USER=root WORDPRESS_DB_PASSWORD=password WORDPRESS_DB_NAME=wordpress
[Dockerfile]
FROM nginx:latest COPY nginx/default.conf /etc/nginx/conf.d/wordpress.conf CMD ["nginx", "-g", "daemon off;"]
環境
<利用サービス>
DNS:さくらのクラウドDNS
サーバ:さくらのVPS
CDN:さくらのウェブアクセラレータ
メールサーバ:さくらのメールボックス
<バージョン>
OS
CentOS Linux release 7.8.2003 (Core)
Docker
Docker version 19.03.11
docker-compose version 1.14.0
お手数ですが、よろしくお願いいたします。
あなたの回答
tips
プレビュー