是否可以在Load Balancer的503响应中包含HSTS Header?

时间:2018-02-02 02:18:45

标签: http https http-headers http-proxy netscaler

所以我面临一个问题,我相信这是不可能的,但现在就可以了。

我有一个Netscaler Load Balancing 2 Web服务器,它通过一个绑定到内容交换机的Load Balance VIP服务于其他Web服务器。

我有一个重写策略,将HSTS插入到200的响应中,这没有问题。当后端服务器出现故障时,我们会在逻辑上向客户端发送503,但客户端希望在此响应中包含HSTS。

这一切都可能吗?用于HSTS的RFC6797描述了服务网站的HSTS,在这种情况下,503由NetScaler生成,但我想确认这不是可能的。

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

是的,这是可能的。即使用内容开关。将您的Web应用程序绑定为具有最高优先级的策略(较低的值==较高的pri。)。

例如,政策10总是逃避真实。策略10指向您的Web服务器。然后永远不会处理政策20。如果您的Web服务器出现故障(由策略10引用),策略10将突然不再被评估。现在将处理政策20 ..

在策略20中,您设置了类型为#34的响应者策略;使用"将您自己的友好错误消息添加为原始http数据并在http标头中包含hsts ..如果没有要处理的策略,您的loadbalancer将只响应503 ...如果您愿意,您可以在策略20中响应503消息但是我建议建立一个适当的向下页面"而不是503.

答案 1 :(得分:0)

如果使用响应者操作生成503页面,则必须手动将HSTS标题添加到响应中。响应者操作很烦人 - 它们会缩短正常后端响应的大部分输出路径。 Netscaler只是逐字地返回字符串而不检查或更改内容。因此,返回此表达式的响应操作将添加您的标题:

imports: [RouterModule.forRoot(routes, { useHash: true, enableTracing: true })],