nginx
SSL
docker
letsencrypt

Dockerを使ってLet's Encrypt で Nginx にSSLを簡単に設定

元記事
https://finnian.io/blog/ssl-with-docker-swarm-lets-encrypt-and-nginx/

NginxのSSLを設定するのに、いちいちconfigファイルを変更するのがややこしいので、Dockerを使って簡単に証明書を取得する

location ^~ /.well-known/acme-challenge/ {

いちいちこういうふうにletsencryptのための設定を加味する必要はないし、apt-getでソフトを取得する必要はない(Dockerさえあれば)

手順

  1. Dockerをインストール
  2. Docker runで証明書を取得
  3. nginxに証明書の場所を追記
  4. 完了

超簡単です。

手順2

この下記コマンドを実行し、証明書を取得する

docker run -d \
 --name nginx-auto-ssl \
 --restart on-failure \
 -p 80:80 \
 -p 443:443 \
 -e ALLOWED_DOMAINS=example.com \
 -e SITES=‘example.com=111.11.11.111:443’ \
 valian/docker-nginx-auto-ssl

111.11.11.111 には、vpsの実ipアドレスを記載してください。

手順3

手順2で作成した証明書と、鍵が

/etc/letsencrypt/live/example.com/

ここに入っているはずですので、確認してください。
あれば、nginxに証明書と鍵の場所を追記し、sslの他の設定をして完了です。

ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

このやり方のなにが良いか

このやり方で一番良かったことは、Docker + nginx でWebサーバーを動かしていた場合です。
nginx on dockerの環境の場合、letsencryptを使ってsslを取得するのに、地獄の苦しみがあります。
それがなくなったことは、非常に嬉しいです。

ひたすら元記事に感謝です。