2日続けてどこにでもありそうな記事ですけど、VPSに移行した時にやったシリーズです。

今回はnginxでhttpsおよびhttp2対応したときの設定を書きます。また、https + http2対応するには証明書が必要ですが、証明書の取得については別途書きます。ちなみに証明書はLet’s Encryptを使用しています。

httpsの設定


nginxのhttpsの設定はメチャクチャ簡単で、下記の通り証明書と秘密鍵のパスを設定してsslディレクティブをonにするだけです。server_nameには自身のドメインを設定してください。後はssl_certificatessl_certificate_keyも環境にあわせて記述してください。

1
2
3
4
5
6
server {
listen 443;
server_name example.com;
ssl on;
ssl_certificate 証明書のパス;
ssl_certificate_key 秘密鍵のパス;

ホントはssl_protocolsとかssl_ciphersも設定したほうがセキュリティ的に良いのでしょうが、IE10だとハンドシェイクが失敗するっぽいので、仕方なく設定してません。いや、このサイトIE10からのアクセスが数パーセントあるんですよ。切っちゃってもいいっちゃいいんですけどね。そもそもサポート切れてるし。

なお、プロトコルと暗号スイートについては下記の記事が詳しいです。

理解してるつもりの SSL/TLS でも、もっと理解したら面白かった話

http2の設定


listenディレクティブにhttp2を足すだけです。

1
2
3
4
server {
listen 443 ssl http2;
server_name example.com;
ssl on;

なおlistenディレクティブにsslと記述するとsslディレクティブは不要になるようです。(下記参照)

nginx連載6回目: nginxの設定、その4 - TLS/SSLの設定

私は残したままですが。

httpからのリダイレクト


最後にhttpで接続してきた場合にhttp2にリダイレクトさせます。
下記を追記して終わりです。

1
2
3
4
5
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}

ちなみに、話がそれてしまいますが、おそらくですがGoogle Search Consoleの今までの履歴はhttpとhttpsで別になってしまうようです。アナリティクスは引き継がれます。後、今のアクセス量からみると検索順位も引き継がれているように思います。
ただし、アナリティクス側のSearch Consoleの値はSearch Consoleをhttpsに切り替えたことによってリセットされてしまいました。この辺は次あたりで書こうと思います。

以上。全体的に大したことないですね。