LoginSignup
5
1

More than 1 year has passed since last update.

【爆速】証明書付きのHTTPSサーバをたった4行の設定で立ち上げる【Caddy】

Posted at

HTTPサーバと言えばNginxがおそらく一番普及していますが、これからはCaddyの時代かもしれません。CaddyならNginxと同じことがより少ない記述量で設定でき、HTTPSの証明書取得・更新まで自動で行ってくれます。ということでCaddyを使って証明書付きのHTTPSサーバーを爆速で立ち上げます。

準備

DNSサーバを設定して、ウェブサーバに使うホスト名とIPアドレスの対応付けを行っておきます。

インストール

Dockerイメージもありますが、ここでは普通にインストールします。Debian、Ubuntuの場合を記します。それ以外の場合は公式の以下を参照。

$ sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
$ sudo apt update
$ sudo apt install caddy

設定ファイル作成

Caddyfileという名前のファイルがCaddyの設定ファイルになります。ここでは静的なウェブサーバを立てます。

Caddyfile
www.example.com {
 root * /home/me/mysite
  file_server
}

以上でwww.example.comというホスト名のサーバを立てて、その内容は/home/me/mysiteディレクトリから提供するようになっています。

ウェブサーバ起動

Caddyfileがあるディレクトリで以下のコマンドを実行します。

$ caddy run

これでウェブサーバが起動します。同時にwww.example.comの証明書を Let's Encrypt 等から取得してくることにより、HTTPSでのアクセスも勝手にできるようになっています。そしてHTTPでのアクセスはHTTPSにリダイレクトされます。もちろん証明書の更新も自動でやっておいてくれます。

以上、終わり!

その他のレシピ

リバースプロキシする場合

Caddyfile
www.example.com {
  reverse_proxy http://localhost:8000
  # 以下のように省略可能
  # reverse_proxy :8000
}

X-Forwarded-ForX-Forwarded-ProtoX-Forwarded-Hostの各ヘッダは自動で付加される。

パスで分ける場合

Caddyfile
www.example.com {
  handle /hoge/* {
    reverse_proxy http://192.168.1.2:8000
    # /hoge/aaa は http://192.168.1.2:8000/hoge/aaa にプロキシされる
  }

  handle_path /fuga/* {
    reverse_proxy http://192.168.1.3:8000
    # /fuga/aaa は http://192.168.1.3:8000/aaa にプロキシされる
  }
}

HTTPのみで立てる場合

Caddyfile
:8000 {
 root * /srv/http/hoge
  file_server
}

http://www.example.com {
  root * /src/http/fuga
  file_server
}

ホスト名を書かずにポートだけ書いたり、明示的にhttp://とすればHTTPのみになる。

あとがき

証明書が自動更新されるHTTPSサーバを4行の設定ファイルだけで立てられるわけですから、すごいですね。NginxとCertbotの構成を全部置き換えたいです。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1