我已将Traefik部署在Azure Service Fabric群集上。一切正常,就像在Traefik中(使用SFC的API)查找其他来宾服务并动态创建前端和后端配置文件一样。因此,我不是静态配置任何前端。
有没有办法告诉Traefik向来自所有朋友的所有响应添加自定义标头?
答案 0 :(得分:0)
Traefik 具有自定义标头功能,用于here中所述的匹配的前端规则。
自定义标头适用于每个规则...
可以通过前端配置自定义标头,以向与前端规则匹配的请求或响应中添加标头
因为使用动态配置,所以需要将这些规则添加到服务中,而不是在traeffik配置中进行设置。
类似的东西:
<StatelessServiceType ServiceTypeName="WebServiceType">
<Extensions>
<Extension Name="Traefik">
<Labels xmlns="http://schemas.microsoft.com/2015/03/fabact-no-schema">
<Label Key="traefik.frontend.rule.example2">PathPrefixStrip: /a/path/to/strip</Label>
<Label Key="traefik.enable">true</Label>
<Label Key="traefik.frontend.headers.customRequestHeaders">heaver:value</Label>
</Labels>
</Extension>
</Extensions>
</StatelessServiceType>
AFAIK,无法以全局方式应用于所有响应。
答案 1 :(得分:0)
接受的答案中建议的XML不适用于SFC上动态发现的服务。但是,我确实接受了它,因为它指出可以通过API来完成。
为了他人的利益,调用API既可以使用“ sfctl”(Service Fabric的CLI),也可以使用cUrl直接调用API。
我无法使用CLI(https://github.com/Microsoft/service-fabric-cli/issues/175),但是我成功使用了cUrl:
curl -kv -X PUT -H 'Content-Type: application/json' -d '{"PropertyName": "traefik.frontend.headers.customResponseHeaders","Value": {"Kind": "String","Data": "Access-Control-Allow-Origin: https://some_value"}}' --cert /Users/me/client_cert.crt --key /Users/me/client_cert.key https://****.westus2.cloudapp.azure.com:19080/Names/full/service/name/$/GetProperty?api-version=6.0 --http1.1
参考:https://docs.microsoft.com/en-us/rest/api/servicefabric/sfclient-api-putproperty