Traefik如何配置实现domain.com请求路由到带指定路径的后端服务
解决方案
你当前的配置只定义了后端服务地址,缺少路由匹配规则,且直接在服务的server URL里加路径不会自动处理路径前缀替换,按以下步骤修改即可生效:
1. 完整配置示例(以Traefik v2/v3为例)
http: # 定义路由规则 routers: my-domain-router: rule: "Host(`domain.com`)" service: "my-service" middlewares: - "add-path-prefix" # 调用路径添加中间件 # 定义中间件:给所有匹配的请求加前缀 /test/foo middlewares: add-path-prefix: addPrefix: prefix: "/test/foo" # 定义后端服务,服务地址只写到端口即可,路径由中间件添加 services: my-service: loadBalancer: servers: - url: "http://server.local:8080"
2. 原配置不生效的原因
- 没有配置
http.routers规则,Traefik不知道要把domain.com的请求转发到你定义的my-service上 - 直接在service的server URL里写路径是无效的,Traefik转发时会忽略服务地址里的路径段,仅使用协议、域名、端口部分,路径需要通过中间件显式处理
3. 其他场景适配
如果后续需要把domain.com/bar转发到http://server.local:8080/test/foo/bar,上述配置已经可以支持;如果需要替换已有前缀,可以使用replacePathRegex中间件实现。
内容的提问来源于stack exchange,提问作者DavidB.
相关产品推荐
相关产品推荐

