【发布时间】:2019-07-19 20:37:50
【问题描述】:
使用部署到 Azure Service Fabric 的 Traefik 1.7.12 版。
我希望 Traefik 将缓存控制标头添加到来自也部署到集群的 Web 应用程序的某些请求的响应中。我发现可以做到这一点的方法是为我的应用程序创建 2 个具有不同前端路由规则的独立服务。最终的结果是这样的:
Route Rule
Host:devmachine.localhost;PathPrefix:/
添加“cache-control:no-cache”响应头。
与
Route Rule
Host:devmachine.localhost;Path:/{url:(.*)(/banner$|\.(js|css)\??)}
其中添加了“cache-control:max-age:86400”响应头。
以下是集群中每个服务清单的 sn-p:
<Extensions>
<Extension Name="Traefik">
<Labels xmlns="http://schemas.microsoft.com/2015/03/fabact-no-schema">
<Label Key="traefik.enable">true</Label>
<Label Key="traefik.frontend.passHostHeader">true</Label>
<Label Key="traefik.frontend.rule">Host:devmachine.localhost;PathPrefix:/</Label>
<Label Key="traefik.backend.loadbalancer.stickiness">true</Label>
<Label Key="traefik.backend.healthcheck.path">/somepage</Label>
<Label Key="traefik.backend.healthcheck.interval">60s</Label>
<label key="traefik.frontend.headers.customResponseHeaders">cache-control:no-cache</label>
</Labels>
</Extension>
</Extensions>
与
<Extensions>
<Extension Name="Traefik">
<Labels xmlns="http://schemas.microsoft.com/2015/03/fabact-no-schema">
<Label Key="traefik.enable">true</Label>
<Label Key="traefik.frontend.passHostHeader">true</Label>
<Label Key="traefik.frontend.rule">Host:devmachine.localhost;Path:/{url:(.*)(/banner$|\\.(js|css)\\??)}</Label>
<label key="traefik.frontend.headers.customResponseHeaders">cache-control:max-age=86400</label>
<label key="traefik.frontend.priority">200</label>
</Labels>
</Extension>
</Extensions>
问题是我的所有响应都获得了“no-cache”标头,好像没有应用第二个匹配器,包括以下示例 URI(应该由第二个路由规则处理):
https://example.com/banner
https://example.com/scripts/some.js
https://example.com/scripts/some-hdbxy778.js
https://example.com/scripts/someother.js?v=2.744
尽管第二个路由规则更长(因为 traefik 应该按长度降序对它们进行排序)并且手动设置优先级 (200)。
【问题讨论】:
-
向 Treafik 团队记录了与此相关的信息:github.com/containous/traefik/issues/5145
标签: azure azure-service-fabric traefik