Caddy v2でSPAとAPIサーバを同時に立ち上げる

Caddy

cover image from Unsplash

Photo by Maxim Zhgulev on Unsplash

本記事について

Web サーバ Caddy を用いた SPA の配信と API サーバのリバースプロキシの設定方法を紹介する。

実現したいこと

今回は実公開ではなく、開発環境でのテストを想定している。

事前準備

Caddyfile の設定

上記を実現するための Caddyfile は以下のようになる。

http://localhost {
  log {
    output file /var/log/access.log
  }
  encode gzip
  # frontend(SPA)
  handle {
    root * /srv
   try_files {path} /index.html
    file_server
  }
  # backend
  handle_path /api/* {
    reverse_proxy localhost:8000
  }
}

これらの設定にはいくつかポイントがあるので、以下で解説する。

HTTPS の無効化

Caddy はデフォルトで自動 HTTPS が有効になっている。つまり HTTP は HTTPS にリダイレクトされる。

今回 HTTPS は不要なので、HTTP の使用を明示する必要がある。

- localhost {
+ http://localhost {
    (省略)
  }

SPA

Caddy 公式ドキュメントに紹介されているので、こちらを参照していただきたい。

/api を省いてリバースプロキシ

handle_path が有効。 handle と役割は同じだが、リクエスト URL からマッチした部分を取り除いて渡すことができる。