Caddyfile 中的指令可以具有将它们限制为特定请求的“匹配器”。这让 Caddy 2 为不同的路径提供不同的内容,但是当多个指令匹配同一个请求时会发生什么?
如果我想使用 Caddy 2 为一个主要是静态的网站提供服务,但将一个/api/
区域转发给某个 Node.js 进程,我的 Caddyfile 可能如下所示:
fake-example.edge.app {
root * /var/www/example
reverse_proxy /api/* localhost:9000
file_server *
}
请求/api/user
将同时匹配 thefile_server *
和reverse_proxy /api/*
匹配器,因此不清楚该请求是转到文件系统还是 Node.js 进程。
我在 Caddy 2 文档中找不到任何描述应该发生什么的内容。在我自己的测试中,结果似乎取决于指令在文件中出现的顺序,较早的条目“获胜”。应该发生什么?如果它是“未定义的行为”,是否有更好的方法来编写此文件以避免歧义?