Dragon Arrow written by Tatsuya Nakaji, all rights reserved animated-dragon-image-0164

Route53 nginx 「サブドメインとメインドメインを両方でアクセスできるようにする」(リダイレクト設定も)

updated on 2019-07-28

イメージ

Route53 nginx 「サブドメインとメインドメインを両方でアクセスできるようにする(リダイレクト設定も)」


環境


Amazon Linux 2
Rails 5.2.1
ruby 2.4.2
nginx 1.12.2
unicorn 5.5.1

はじめに


https://www.dragonarrow.work/articles/163 こちらの記事通り、wwwでアクセスできるようにした状態からのスタートとする。



手順



Route53 メインドメインのレコード追加

下記の通り、1~4を行い、Aレコードでメインドメインが追加できたことを確認する。

  1. レコードセットの作成
  2. 名前(サブドメイン空)
  3. EC2のElastic_IPを指定
  4. 作成


nginx リダイレクト設定

nginx設定ファイルにて、メインドメインでアクセスしたら、wwwのurlにリダイレクトするように指定する。

ちなみに、筆者のアプリ名はfroala-blog、設定ファイルは /etc/nginx/conf.d/froala-blog.conf だが、人によって名前やパスは違うはず

便宜読み換える。

# log directory
error_log  /var/www/rails/froala-blog/log/nginx.error.log;
access_log /var/www/rails/froala-blog/log/nginx.access.log;
# max body size
client_max_body_size 2G;
upstream app_server {
  # for UNIX domain socket setups
  server unix:/var/www/rails/froala-blog/tmp/sockets/unicorn.sock fail_timeout=0;
}
server {
  charset utf-8;
  server_name www.example.com [My_Elastic_IP] example.com; # example.com(メインドメイン)を追加
  # nginx so increasing this is generally safe...
  keepalive_timeout 5;
  # path for static files
  root /var/www/rails/froala-blog/public;
  # page cache loading
  try_files $uri/index.html $uri.html $uri @app;
  location @app {
    # HTTP headers
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://app_server;
  }
  # Rails error pages
  error_page 500 502 503 504 /500.html;
  location = /500.html {
    root /var/www/rails/froala-blog/public;
  }
  
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
    if ($host = www.example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

  # example.com(メインドメイン)でアクセスしたらwwwつきurlに返す
    if ($host = example.com) {
        return 301 https://www.$host$request_uri;
    } # managed by Certbot 


  listen 80;
  server_name www.example.com [My_Elastic_IP] example.com; # httpでのメインドメインのアクセスを許さない
    return 404; # managed by Certbot 




}


最後に、サーバーの再起動

unicorn停止

sudo kill -QUIT `cat /var/www/rails/froala-blog/tmp/pids/unicorn.pid`

unicorn起動

bundle exec unicorn_rails -c /var/www/rails/froala-blog/config/unicorn.conf.rb -D -E production

nginx再起動

sudo service nginx restart


http://example.com, https://examole.com にアクセスすると、https://www.exaple.com でアクセスするようになる。


Thay's all for now!!