将自定义标头添加到Azure的Service Fabric上来自Traefik的所有响应

时间:2019-01-08 10:08:44

标签: azure-service-fabric traefik

我已将Traefik部署在Azure Service Fabric群集上。一切正常,就像在Traefik中(使用SFC的API)查找其他来宾服务并动态创建前端和后端配置文件一样。因此,我不是静态配置任何前端。

有没有办法告诉Traefik向来自所有朋友的所有响应添加自定义标头?

2 个答案:

答案 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