Docker

https-portalでwww無しからwww有りへのドメインリダイレクト設定[Docker-Compose]

スポンサーリンク
Docker

以前の記事でも書きましたがサーバ移転に伴ってインフラをホストサーバに直接インストールするスタイルからDockerを使ったスタイルに変更しました。

それに伴って、メインドメインの受け皿がなくなってしまい、GoogleAdsenseのために必要なads.txtの認証が得られなくなってしまいました。

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

タイトルとURLをコピーしました