Можно ли включить заголовок HSTS в ответ 503 от балансировщика нагрузки?
Так что я столкнулся с вопросом, и я считаю, что это невозможно, но здесь это идет.
У меня есть веб-серверы Netscaler Load Balancing 2 через VIP Load Balance, привязанные к коммутатору контента, обслуживающему другие веб-серверы.
У меня есть политика перезаписи, которая вставляет HSTS в ответы для 200, и это работает без проблем. Когда внутренние серверы отключаются, мы логически отправляем 503 клиенту, но клиент хочет включить HSTS в этот ответ.
Это вообще возможно? RFC6797 для HSTS описывает HSTS для обслуживающего веб-сайта, и в этом случае 503 генерируется NetScaler, но я хотел подтвердить, что это невозможно.
Любая помощь приветствуется.
2 ответа
Если вы генерируете свою страницу 503 с помощью действия респондента, вам придется добавить заголовок HSTS к вашему ответу вручную. Действия респондента раздражают таким образом - они сокращают большую часть выходного пути, по которому идут обычные ответы бэкэнда.NETscaler просто возвращает дословно строку без проверки или изменения содержимого. Таким образом, действие responsewith, возвращающее это выражение, добавит ваш заголовок:
"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>"
Да, это возможно. т.е. используйте переключатель контента. привязать ваше веб-приложение как политику с наивысшим приоритетом (более низкое значение == более высокое pri.).
например, политика 10 всегда стремится к истине. политика 10 баллов на ваш веб-сервер. политика 20 тогда никогда не будет обработана. если ваш веб-сервер отключается (на что ссылается политика 10), политика 10 больше не будет оцениваться. Политика 20 теперь будет обработана..
в политике 20 вы устанавливаете политику респондента типа "ответить", добавьте свое собственное понятное сообщение об ошибке в виде необработанных данных http и включите hsts в заголовок http. Ваш loadbalancer ответит только 503, если у него нет политики для обработки. вам нравится, что вы можете ответить сообщением 503 в политике 20, но я бы рекомендовал создать правильную "нижнюю страницу" вместо 503.