https を導入する際に必須となるであろうリダイレクトの設定についてまとめます。
Webを漁ってみるとrewriteの設定ばかりが目に着くんだけど実はNginx公式サイトではreturnを使用する方法が推奨されている。
HTTPSへのリダイレクト設定
ちなみにNginx公式サイト(Converting Mongrel rules)では以下のようにserverコンテキストを分けて記述することを推奨しています。
1 2 3 4 5 6 7 8 9 10 11 |
server { listen 80; server_name example.org; return 301 http://www.example.org$request_uri; } server { listen 80; server_name www.example.org; ... } |
Apache を使っていたときから思ってたけど、単純に http→https のリダイレクトの設定に正規表現使う必要ないですしね。
後から設定を確認した際の視認性に加えて、rewriteやifを使用すると正規表現を理解できる分 処理が重くなることや、serverコンテキストを分けないで記述することですべての処理がそこを通過する ということを考えると、やっぱりreturnが推奨されることがわかります。
公式の例は https でのそれではないけれど、動きとしては同じなのでコレを採用することにします。
したがって、http→https のリダイレクトの書き方としては以下がベターということで。
1 2 3 4 5 6 7 8 9 10 11 |
server { listen 80; server_name nginx-ssl.com; return 301 https://$host$request_uri; } server { listen 443 ssl ; server_name nginx-ssl.com; : } |
ちなみに rewrite を使った書き方もメモとして残しておきます。
以下を↑のreturnディレクティブと置き換えればよいだけです。permanent も指定できるので、返されるヘッダ情報はreturnを使用したときと全く同じになります。
1 |
rewrite ^(.*)$ https://$host$request_uri permanent; |
以上、http から https へのリダイレクトの設定でした。
HTTPS(SSL)の設定は以下にまとめています。参考にどうぞ。
以上です。
↓↓↓ 持っていると便利な一冊。