首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当发生冲突时,卡迪会选择哪一场比赛?

当发生冲突时,卡迪会选择哪一场比赛?
EN

Server Fault用户
提问于 2020-06-17 18:22:24
回答 2查看 2.1K关注 0票数 3

Caddyfile中的指令可以有“匹配器”,将它们限制在特定的请求上。这样就可以为不同的路径提供不同的内容,但是当多个指令匹配相同的请求时会发生什么呢?

如果我想使用Caddy 2提供一个基本静态的网站,但将/api/区域转发到某些Node.js进程,那么我的Caddy文件可能如下所示:

代码语言:javascript
复制
fake-example.edge.app {
  root * /var/www/example
  reverse_proxy /api/* localhost:9000
  file_server *
}

/api/user的请求将与file_server *reverse_proxy /api/*匹配器相匹配,因此不清楚请求将传递到文件系统还是Node.js进程。

我在Caddy 2文档中找不到任何描述应该发生什么的东西。在我自己的测试中,结果似乎取决于指令在文件中显示的顺序,早期的条目“获胜”。会发生什么呢?如果它是“未定义的行为”,是否有更好的方法来编写这个文件以避免歧义?

EN

回答 2

Server Fault用户

回答已采纳

发布于 2020-11-06 07:32:22

根据我的理解和经验,reverse_proxy优先,因为指令具有默认的隐式顺序:https://caddyserver.com/docs/caddyfile/directives#directive-order

若要强制执行不同的顺序,您至少有三个选项:

  1. 使用一条路线:
代码语言:javascript
复制
    route /api/* {
      file_server
      reverse_proxy localhost:9000
    }
  1. 使用order全局选项更改默认顺序
  2. handle之前与file_server一起使用reverse_proxy
票数 3
EN

Server Fault用户

发布于 2020-08-19 12:45:57

根据我的理解和经验,更具体的考虑比更一般性的考虑。

例如,在您的示例中,任何匹配/API/的内容都应该转发到节点,其他任何内容都应该转发到普通的the服务器。

无论如何,只要/api/不是网站上的实际文件夹,访问该网站的请求就不重要了

另见:https://caddyserver.com/docs/caddyfile/directives/root

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1021924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档