👻

Caddy:Caddyfileに`localhost`を指定すると、https://127.0.0.1/ ではアクセスできない

2021/09/20に公開

動作環境

  • XUbuntu 18.04
  • cadddy v2.4.5

はじめに

CaddyというWebサーバを使っています。

以下のCaddyfileを使ってcaddyを起動します。

Caddyfile
localhost
respond "Hello, world!"

https://localhost にはアクセスできますが、https://127.0.0.1/ にはアクセスできません。
これはなぜでしょうか?

$ curl https://localhost
Hello, world!$ 

$ curl  https://127.0.0.1/
curl: (35) error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error

原因

https://caddyserver.com/docs/caddyfile/concepts#addresses に以下のように記載されています。

If you specify a hostname, only requests with a matching Host header will be honored. In other words, if the site address is localhost, then Caddy will not match requests to 127.0.0.1.

リクエストヘッダHostが一致しているかどうかを確認しているため、 https://127.0.0.1/ にアクセスできないようです。

以下のように、複数のホストをカンマ区切りで指定することで、https://localhosthttps://127.0.0.1/ の両方にアクセスできます。

Caddyfile
localhost, 127.0.0.1
respond "Hello, world!"
$ curl https://127.0.0.1/
Hello, world!$ curl https://localhost/
Hello, world!$ 

補足

複数のホストを指定する場合、カンマの後ろにはスペースが必要です。
カンマの後ろにスペースがないと、以下のエラーが発生します。

$ sudo caddy run -config Caddyfile 
2021/09/20 01:00:29.692	INFO	using provided configuration	{"config_file": "Caddyfile", "config_adapter": ""}
run: adapting config using caddyfile: Caddyfile:1 - Error during parsing: Site addresses cannot contain a comma ',': 'localhost,127.0.0.1' - put a space after the comma to separate site addresses
GitHubで編集を提案

Discussion