XserverVPSで無料SSL(Let's Encrypt)を設定する方法についてのメモ。
VPS管理画面で「SSL証明書」というのがあったので、ここから「追加申し込み」をするのかなーと思って(Let's Encryptもメニューにあったので)申し込んだけど、何も起きず何日か待ちぼうけを食らっていたので、ちゃんとマニュアルを読んだら、手動で設定する方法が、とても丁寧にのっていた。。。→手順はこちら
手順の通りで何もトラブルなく完了できたけど、最後のnginxのconf設定だけ自分の環境に合わせて変更したので、そのメモ。
nginx + Flask / 5000番->443リダイレクトでSSL有効化
Flaskで構築したアプリをwaitressで5000番ポートで起動していて、nginxでリバースプロキシさせて、wwwありと無しの両方ともに HTTTPS になるように動かしたい。
内容としては、最初の server ブロックがポート 80 でのリクエストを 443 の HTTPS にリダイレクトし、2つ目の server ブロックが実際の HTTPS 通信を処理して、Flask アプリケーションへのリバースプロキシを実行する。server_name ディレクティブには、マイドメイン.com と www.マイドメイン.com の両方が含まれている。
マイドメインのところは、実際に設定したいドメイン名が入る。confファイルは /etc/nginx/conf.d/ 配下にあるものは全てインクルードされるので、管理しやすい名称(アプリ名.conf とか)であればok。
server {
server_name マイドメイン.com www.マイドメイン.com;
# ポート 80 へのリクエストを 443 にリダイレクト
listen 80;
return 301 https://$host$request_uri;
}
server {
server_name マイドメイン.com www.マイドメイン.com;
# HTTPS の設定
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/マイドメイン/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/マイドメイン/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass http://localhost:5000/;
}
}