なみひらブログ

学んだことを日々記録する。~ since 2012/06/24 ~

サービスの区別をコンテキストパスだったのをサブドメインで区別するようにしたときの作業メモ

結果

以下のようなURLだったのを

以下のようにしました。

前提

自分の環境で関係するものは以下です。

  • Route53(DNS
  • Apache(Webサーバ)
  • Let's Encrypt(証明書)
  • Laravel(サービスA)
  • spring-boot(サービスB)

作業

サブドメイン登録

Route53のページに行きレコード追加。 とりあえず既存のトップドメインはサービスA側に流す(Google Ads対策)。

今回のようにRoute53でトップドメインを他に流すときは以下参照。

Route53+S3 Web Hostingでホスト名無しのドメイン設定が出来るのか? - プログラマでありたい

Apache設定変更

EC2で動いているapacheの設定を変更する。サブドメインでアクセスしてきたらそれぞれのサービスに流すようにする。

/etc/httpd/conf/httpd.conf

NameVirtualHost *:80   ※追加または有効化

<VirtualHost *:80>
    ...
</VirtualHost>

<VirtualHost *:443>  ※Laravelで作ったサービスAの設定。/var/www/直下にコード配置。
  ServerName "サービスA.exmaple.com"
  DocumentRoot "/var/www/サービスA/public/"

  <Directory "/var/www/サービスA/public/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order allow,deny
    Allow from all
  </Directory>

  ErrorLog  "logs/ssl_error_log"
  CustomLog "logs/ssl_access_log" combined

  # SSL
  SSLEngine on
  SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem
  SSLCertificateChainFile /etc/letsencrypt/live/www.example.com/chain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
</VirtualHost>

<VirtualHost *:443>  ※spring-bootで作ったサービスBの設定。8080で起動中
  ServerName "サービスB.example.com"

  ProxyPreserveHost On
  ProxyPass / http://localhost:8080/
  ProxyPassReverse / http://localhost:8080/

  ErrorLog  "logs/ssl_error_log"
  CustomLog "logs/ssl_access_log" combined

  # SSL
  SSLEngine on
  SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem
  SSLCertificateChainFile /etc/letsencrypt/live/www.example.com/chain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
</VirtualHost>

設定が終わったらapache再起動。

SSLの設定もっと重複しないようにかけそう(´・ω・`)

サブドメインでも使えるSSL証明証を発行

EC2でコマンドを叩く

sudo certbot certonly --agree-tos --webroot -w /var/www/html/ -d example.com -d www.example.com -d サービスA.example.com -d サービスB.example.com

※参考:https://designsupply-web.com/developmentlab/3542/

Laravel(サービスA)の修正

コンテキストパス、ドメインに依存しているコードを修正する。

以下の修正も忘れずに

  • public/.hatches
<IfModule mod_rewrite.c>
...
  RewriteBase /      ※コンテキストパスの記載があったら消す
...

spring-boot(サービスB)の修正

コンテキストパス、ドメインに依存しているコードを修正する。

まとめ

実際はあれもこれもやんなきゃでグダグダにやって、最終的にできた(´Д`)