👻
Caddy:Caddyfileに`localhost`を指定すると、https://127.0.0.1/ ではアクセスできない
動作環境
- 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://localhost と https://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
Discussion