以前の記事でも書きましたが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にしているため、このような記載になりますが、もちろんサブドメインを他の文字列にしている場合も同様の記載方法で対応可能です。