注意
Caddy v2からconfigが変わっています。
もしEC2で導入したバージョンがv2である場合は、configが一部異なっています。
この記事の中だと、
proxy が reverse_proxy
websocket が
header_up Host {http.request.host}
header_up X-Real-IP {http.request.remote}
header_up X-Forwarded-For {http.request.remote}
header_up X-Forwarded-Port {http.request.port}
header_up X-Forwarded-Proto {http.request.scheme}
header_up Connection {http.request.header.Connection}
header_up Upgrade {http.request.header.Upgrade}
になっています。置き換えて読んでください。
EC2でHTTPS化するの面倒
HTTPSは人権!
でもEC2環境だと。ロードバランサーやCDNをつけてやるのはお金がかかる!
かといって、Let’s Encryptのコマンド叩きたくない! Nginxを触るのも面倒!
そういうことよくありませんか?
そんなお悩みCaddyなら解決します!
Caddyを使えば、Let’s Encryptの証明書をとってきて、自動でリダイレクトまでやってくれる!
HTTP/2対応! Golangで書かれててなんかすごい気がする!
さああなたも試しましょう!
環境
マシン: EC2 t2.micro インスタンス
OS: Amazon Linux (Amazon Linux 2 AMI (HVM), SSD Volume Type - ami-0a1c2ec61571737db)
How to
ドメインの購入と、EC2のIP固定と、ドメインのAレコードをEC2のIPに向けるのは省略!
あともちろんセキュリティグループの設定で、ポート80と443はパブリックアクセスするのを忘れずに!
できた人は、SSHでEC2に入ります。
その後以下のコマンドを実行!
$ sudo amazon-linux-extras install epel
$ sudo yum install caddy
$ cd /etc/caddy/conf.d
$ sudo vim xxx.conf
以下の通りに編集!
example.jp {
# 公開するディレクトリのパスを書くだけ
root /var/www/public
}
$ sudo service caddy start
$ sudo service caddy status
なんとこれだけで対応したドメインでHTTPS化をして、HTTPからのリダイレクトもやってくれる...
つよい...
リバースプロキシしたい!
Node.jsとかで書いたAPIをHTTPSで出したいけど、リバースプロキシは面倒!
そんなお悩みもCaddyで解決!
さきほどのxxx.confを以下の通りにするだけ!
example.jp {
# proxy パス プロキシするアドレスとポート
proxy / localhost:8080
# socket.ioを使用する場合は、websocketを追記するだけ!
proxy /socket.io localhost:8080 {
websocket
}
}
※conf書き換えたら、ちゃんとリスタートしよう
$ sudo service caddy restart
Nginxなら数行書かないと対応しないWebSocketも一行で対応!
これは便利!
インスタンスが再起動しても動かしたい
このままだとインスタンスの再起動を行うと自動的に上がってこないので、その方法も紹介
$ sudo systemctl enable caddy
ちゃんと確認も...
$ systemctl is-enabled caddy
まとめ
これなら、AWSの無料枠のEC2でも気軽にHTTPS化!
タノシイ!
※ プロダクション環境では、もう少しちゃんとした方がいいです
※ Caddyのドキュメントわかりずらいと思うの自分だけ?
※ Amazon Linuxの例がなかったので書いてみた