0

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

我通过负载平衡 VIP 有一个 Netscaler 负载平衡 2 Web 服务器,该 VIP 绑定到为其他 Web 服务器提供服务的内容交换机。

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

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

任何帮助表示赞赏。

4

2 回答 2

0

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

"HTTP/1.1 503 Service Unavailable\r\n"+
"Content-Type: text/html;charset=utf-8\r\n"+
"Strict-Transport-Security: max-age=31536000\r\n"+
"\r\n"+
"<!doctype html><html><body>
Backend server for " + HTTP.REQ.HOSTNAME + HTTP.REQ.URL.HTTP_URL_SAFE + " is not responding. 
</body></html>"
于 2018-06-07T15:37:51.840 回答
0

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

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

在策略 20 中,您放置了一个类型为“respond with”的响应者策略,将您自己的友好错误消息添加为原始 http 数据,并在 http 标头中包含 hsts。如果没有要处理的策略,您的负载均衡器只会响应 503。如果你喜欢你也可以在策略 20 中回复 503 消息,但我建议创建一个适当的“向下页面”而不是 503。

于 2018-02-05T01:44:12.463 回答