【AWS】Route53で取得したドメインでアクセスすると「404 Not Found」が表示されてしまう


AWSにデプロイしたwebサイトに独自で取得したドメインからアクセスしようとしたらエラーで正常にアクセスできずにハマってしまったので、僕のインプットも兼ねて今回解決に至った解決策を共有したいと思います。

結論

初めに結論から申しますと、今回のエラーの原因はRoute53で取得したドメインを本番環境のnginxの設定ファイル(nginx.conf)に紐付けする作業を行っていなかったために発生してしまいました。

なぜドメインからアクセスできなかったのか?

nginxはserver_nameを見てどのサーバーに振り分けるのかを見ているようなので、nginxの設定ファイルであるnginx.confファイルの「server_name」にRoute53で取得したドメインを記述するという作業を行っていなかったため、アクセスすることができなかったようです。

解決方法

nginx.confファイルの設定を変更してやれば解決できます。

エラー時のnginx.confファイル↓

error_log  /var/www/rails/friends/log/nginx.error.log;
access_log /var/www/rails/friends/log/nginx.access.log;

client_max_body_size 2G;
upstream app_server {
  server unix:/var/www/rails/friends/tmp/sockets/.unicorn.sock fail_timeout=0;
}
server {
  listen 80;
  server_name 18.180.36.193;
  keepalive_timeout 5;
  root /var/www/rails/friends/public;
  try_files $uri/index.html $uri.html $uri @app;
  location @app {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://app_server;
  }
  error_page 500 502 503 504 /500.html;
  location = /500.html {
    root /var/www/rails/friends/public;
  }
}

この中のserver_nameにRoute53で取得したドメインを追加する必要があります↓

error_log  /var/www/rails/friends/log/nginx.error.log;
access_log /var/www/rails/friends/log/nginx.access.log;

client_max_body_size 2G;
upstream app_server {
  server unix:/var/www/rails/friends/tmp/sockets/.unicorn.sock fail_timeout=0;
}
server {
  listen 80;
  server_name 18.180.36.193 guardians-community.com;
  keepalive_timeout 5;
  root /var/www/rails/friends/public;
  try_files $uri/index.html $uri.html $uri @app;
  location @app {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://app_server;
  }
  error_page 500 502 503 504 /500.html;
  location = /500.html {
    root /var/www/rails/friends/public;
  }
}

server_nameを複数設定する際は、nameの間を空白で開けてやれば復数設定することができます。
参考記事:Nginx server_nameを複数指定する

以上の設定が完了したら下記コマンドを実行してnginxの設定を上書きします。↓

$ sudo nginx -s reload

これで設定完了です。

この紐付け作業が完了したらドメインからアクセスすることができるようになっているはずです。

まとめ

以上で今回僕がハマってしまったRoute53で取得したドメインでアクセスできなかった問題と解決策の共有を終わりたいと思います。

インフラは最近触り始めてばかりで初歩的な間違いではあったのかもしれませんが、今回のエラーのおかげでまた1つインフラに対する知見を増やすことができました。

最後まで読んでいただきありがとうございました。
この記事がどなたかのやくに立ってくれれば幸いです。