以前の記事でも書きましたがBlogのサーバ移転に伴ってインフラをホストサーバに直接インストールするスタイルからDockerを使ったスタイルに変更しました。
それに伴って、メインドメインの受け皿がなくなってしまい、GoogleAdsenseのために必要なads.txtの認証が得られなくなってしまいました。
Blogサイトはhttps://www.wmapst.net/というURLですが、GoogleAdsenseのBotはhttps://wmapst.net/をチェックしに来ます。
ですが、前回設定したdocker-composeファイルではhttps://www.wmapst.net/しか受け入れていません。
ではどうするのか。
どうやらhttps-portalの設定でドメインリダイレクトを実現できることが判明したので、それを紹介していきます。
まずはおさらいです。
前回作成したdocker-compose.ymlファイル
version: '3.3'
services:
wordpress_db:
image: mysql:5.7
container_name: wordpress_db
restart: always
volumes:
- ./data:/var/lib/mysql
- ./mysql_conf/my.cnf:/etc/mysql/my.cnf
environment:
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASS}
MYSQL_DATABASE: ${DB_NAME}
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_USER_PASS}
TZ: 'Asia/Tokyo'
networks:
app_net:
ipv4_address: '172.18.0.2'
wordpress_php:
image: wordpress:5-fpm
container_name: wordpress_php
depends_on:
- wordpress_db
restart: always
volumes:
- ./wordpress:/var/www/html
environment:
WORDPRESS_DB_HOST: wordpress_db
WORDPRESS_DB_NAME: ${DB_NAME}
WORDPRESS_DB_USER: ${DB_USER}
WORDPRESS_DB_PASSWORD: ${DB_USER_PASS}
TZ: 'Asia/Tokyo'
networks:
app_net:
ipv4_address: '172.18.0.3'
wordpress_web:
image: nginx
container_name: wordpress_web
depends_on:
- wordpress_php
restart: always
volumes:
- ./nginx-conf/default.conf:/etc/nginx/conf.d/default.conf
- ./wordpress:/var/www/html
- ./web-logs:/var/log/nginx
environment:
TZ: 'Asia/Tokyo'
networks:
app_net:
ipv4_address: '172.18.0.4'
https-portal:
image: steveltn/https-portal:1
container_name: https-portal
depends_on:
- wordpress_web
ports:
- '80:80'
- '443:443'
restart: always
volumes:
- ./ssl_certs:/var/lib/https-portal
environment:
DOMAINS: '${HOST_DOMAIN} -> http://wordpress_web:80/'
STAGE: '${PRODUCTION_STAGE}'
CLIENT_MAX_BODY_SIZE: 64M
TZ: 'Asia/Tokyo'
networks:
app_net:
ipv4_address: '172.18.0.5'
networks:
app_net:
driver: bridge
ipam:
driver: default
config:
- subnet: '172.18.0.0/16'
これのhttps-portalのDOMAINSを変更します。
before:
https-portal:
image: steveltn/https-portal:1
container_name: https-portal
depends_on:
- wordpress_web
ports:
- '80:80'
- '443:443'
restart: always
volumes:
- ./ssl_certs:/var/lib/https-portal
environment:
DOMAINS: '${HOST_DOMAIN} -> http://wordpress_web:80/'
STAGE: '${PRODUCTION_STAGE}'
CLIENT_MAX_BODY_SIZE: 64M
TZ: 'Asia/Tokyo'
networks:
app_net:
ipv4_address: '172.18.0.5'
after:
https-portal:
image: steveltn/https-portal:1
container_name: https-portal
depends_on:
- wordpress_web
ports:
- '80:80'
- '443:443'
restart: always
volumes:
- ./ssl_certs:/var/lib/https-portal
environment:
DOMAINS: '${HOST_DOMAIN2} => ${HOST_DOMAIN} , ${HOST_DOMAIN} -> http://wordpress_web:80/'
STAGE: '${PRODUCTION_STAGE}'
CLIENT_MAX_BODY_SIZE: 64M
TZ: 'Asia/Tokyo'
networks:
app_net:
ipv4_address: '172.18.0.5'
変更した部分だけを取り上げると
# before:
DOMAINS: '${HOST_DOMAIN} -> http://wordpress_web:80/'
# after
DOMAINS: '${HOST_DOMAIN2} => ${HOST_DOMAIN} , ${HOST_DOMAIN} -> http://wordpress_web:80/'
https-portalでは[=>]でドメインリダイレクトを実現できます。また、カンマを用いることで設定を複数持たせることが可能です。
そのため、上記のような変更でwww無しからwww有りへとリダイレクトさせることが可能です。
もちろんこれを行うためには.envファイルも変更が必要です。
本番用のみですが、以下のような感じです。
.env
DB_NAME=wordpress
DB_USER=wp_user
DB_USER_PASS=wp_passwd
DB_ROOT_PASS=root_passwd
HOST_DOMAIN=www.sample-wmapst.net
HOST_DOMAIN2=sample-wmapst.net
PRODUCTION_STAGE=production
僕の場合はサブドメインをwwwにしているため、このような記載になりますが、もちろんサブドメインを他の文字列にしている場合も同様の記載方法で対応可能です。