このサイトをHTTPS対応させた
そろそろHTTP2時代も本格的に近づいてくることから、このサイトをHTTPSに対応させた。証明書は無料で使えるLet's Encyriptのを利用させてもらった。
このサイトはdockerで動かしている。Let's Encryptから証明書を取得してWebサーバ (nginx) に設定してくれる、 docker-letsencrypt-nginx-proxy-companion
という便利なdockerイメージを追加するだけで、HTTPS対応ができた。
docker-compose.yml
ファイルに、 companion サービスを追加している。
web:
image: jwilder/nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- nginx-certs:/etc/nginx/certs:ro
- /etc/nginx/vhost.d
- /usr/share/nginx/html
- /var/run/docker.sock:/tmp/docker.sock:ro
restart: always
companion:
image: alastaircoote/docker-letsencrypt-nginx-proxy-companion
volumes_from:
- web
volumes:
- nginx-certs:/etc/nginx/certs:rw
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: always
あとは、HTTPS対応させたいサービス側に LETSENCRYPT_HOST
と LETSENCRYPT_EMAIL
環境変数を設定するだけで、自動的に証明書を取得してくれるようになる。
app:
build: app
volumes:
- tdiary-data:/usr/src/app/data
- tdiary-public:/usr/src/app/public
environment:
- RACK_ENV
- NEW_RELIC_LICENSE_KEY
restart: always
web:
build: web
links:
- app
volumes_from:
- app
environment:
- VIRTUAL_HOST=www.machu.jp
- LETSENCRYPT_HOST=www.machu.jp
- LETSENCRYPT_EMAIL=kmachu@gmail.com
restart: always
dockerで動かすことで、各サービスが分離されるだけでなく、設定をGitHubリポジトリで管理できるようになるのも嬉しいところ。