You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Caddy新手求助:子域名按路径代理不同端点的配置失效排查

解决Caddy子域名路径代理的问题

嘿,我来帮你排查下这个配置的问题~你的思路是对的,但原配置缺了几个关键参数,导致代理没正常工作。

问题出在哪?

你写的proxy /cats http://serviceA:80默认会把完整的请求路径(比如/cats/blue)直接传递给serviceA,也就是serviceA收到的请求是http://serviceA:80/cats/blue。如果serviceA本身没有监听/cats前缀的路径,就会返回404。另外,默认的代理配置没有保留原始请求的关键头信息,也可能导致后端服务无法正确处理请求。

修正后的配置(Caddy v1)

根据你的需求,分两种情况调整:

情况1:后端服务直接处理根路径(比如serviceA的接口是/而不是/cats)

添加without参数去掉路径前缀,同时用transparent保留原始请求头:

pets.my-website.com {
    proxy /cats http://serviceA:80 {
        transparent
        without /cats
    }
    proxy /dogs http://serviceB:80 {
        transparent
        without /dogs
    }
}

这样用户访问pets.my-website.com/cats/meow时,serviceA会收到http://serviceA:80/meow,刚好匹配后端的根路径接口。

情况2:后端服务确实需要接收/cats前缀的路径

只保留transparent参数即可,不用without:

pets.my-website.com {
    proxy /cats http://serviceA:80 {
        transparent
    }
    proxy /dogs http://serviceB:80 {
        transparent
    }
}

额外检查项

除了配置本身,还要确认这些点:

  • serviceA和serviceB是否在Caddy能访问到的网络里?比如如果是Docker容器,要确保它们和Caddy在同一网络;如果是本地服务,端口有没有对外开放。
  • 服务器防火墙有没有放行Caddy到serviceA/serviceB的80端口请求?
  • DNS解析是否正确:pets.my-website.com是不是指向了你的Caddy服务器IP?

内容的提问来源于stack exchange,提问作者X0r0N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:29:09