とーますメモ

Ruby on Rails / Goなどの学習メモ

【Nginx】複数ドメイン+SSLを同じサーバで設定する方法

昔は、1台のサーバに複数のドメインが設定できても、SSL証明書は1つしか設定できなかったが、今はSNI (Server Name Indication)という仕組みを使うことで1台のサーバでもドメイン数だけSSL証明書をできるようになった。(ワイルドカード証明書、通常SSL証明書の組み合わせでもできる)

詳細は以下のページを参照。
www.idcf.jp

WebサーバでSNIが使用できるかは以下のコマンドで
「TLS SNI support enabled」と表示されていれば使用できる

$ nginx -V
...
...
TLS SNI support enabled
...

Nginxの設定は以下のページを参考にした。
Nginx でSSLを使ってみた(追記:SNIを含めてマルチドメインへの対応) | レンタルサーバー・自宅サーバー設定・構築のヒント

失敗談

実はこの設定をする前に既にひとつのサイトを運営していたのだが、
そのサイトのserver_name設定がそもそも間違えていて、運良くdefault_serverとして間違えていたserver_nameのserverコンテキストが選ばれていたためサイトが動作していたことがわかった。これがわかるまで結構時間がかかった。

間違い

server {
  server_name example.com
}

正しい

server {
  server_name www.example.com
}