目標:http://ドメイン名でリクエストが来た時https://ドメイン名に自動でリダイレクトさせるように設定する
前提:AWS+Rails+Unicorn+Nginx
※ご注意2022年現在下記のやり方はパフォーマンス的に非推奨となっています。学習用ならありかもですが・・・
非推奨でないAWSのALBを使う場合はこちらをどうぞ
1:まずはEC2にSSH接続する(各自SSH接続の方法は異なります)
ssh my-portfolio-key-rsa
2:nginxの設定を変更するためにまずは移動
cd /etc/nginx/conf.d
3:設定ファイルを書き込む(各自異なります)
sudo vim アプリ名.conf
if ($http_x_forwarded_proto = http) { return 301 https://$server_name$request_uri; }
上記を追加
4:Nginxを再起動するために移動
cd /var/www/rails/Tools/ ↑自分のアプリ名
5:nginxを再起動
sudo nginx -s reload
nginx: [error] open() "/run/nginx.pid" failed (2: No such file or directory)
上記のエラーが発生したので次のコマンドをします。
sudo touch /run/nginx.pid && service nginx restart
またエラー発生
Failed to restart nginx.service: The name org.freedesktop.PolicyKit1 was not provided by any .service files
sudo service nginx restart
こちらもsudoが必要だったようでNginxがやっと再起動できた。
http://ドメイン名で試したところ
https://ドメイン名に自動でリダイレクトしてくれるのを確認できた!
http://ドメイン名でアクセスしてhttps://IPアドレスになりエラーになる場合
前提:他のブラウザでhttp://ドメイン名でアクセスしてhttps://ドメイン名に自動でリダイレクトされるが、あるブラウザではhttps://IPアドレスになりエラーになる場合
GoogleChromeでなったときの対処法