Назад | Перейти на главную страницу

Рекомендуется ли устанавливать заголовки HTTP в балансировщике нагрузки?

Я управляю настройкой, в которой есть два сервера приложений ngnix за обратным прокси-сервером nginx. Я хотел бы установить заголовки вроде X-XSS-Protection или Strict-Transport-Security. В настоящее время он установлен как на серверах приложений, так и на балансировщике нагрузки, что приводит к запутыванию заголовков.

Error parsing header X-XSS-Protection: 1; mode=block, 1; mode=block: expected semicolon at character position 14. The default protections will be applied. 

Я вижу, что повторяющиеся значения заголовка добавляются к одному и тому же ключу заголовка. Мой вопрос таков: каковы общие соглашения / принятые рекомендации по установке заголовков? Должен ли я устанавливать заголовки в бэкэнде и удалять их из балансировщика нагрузки или балансировщик нагрузки должен быть тем, который устанавливает заголовки?

На мой взгляд, неважно, где установлены заголовки. Преимущество установки заголовков в Nginx в том, что их действительно довольно просто изменить по сравнению с изменением кода, развертыванием и т. Д. У меня было два случая, когда мне приходилось переписывать заголовки, используя либо Nginx, либо балансировщик нагрузки F5, они дать больше гибкости.

Чтобы получить больше полезной информации, вам нужно будет привести более конкретный пример, поскольку ваш вопрос слишком общий.

Как разработчик я бы также сказал, что нужно принимать во внимание среды разработки.

У нас есть только балансировщик нагрузки в нашей производственной среде, а наша основная среда препродов и среды разработки не имеют балансировщика нагрузки перед собой. По этой причине я предпочитаю устанавливать заголовки на веб-серверах NGinx, чтобы они также были настроены для сред разработки.

Это также зависит от того, завершаете ли вы HTTPS: на балансировщиках нагрузки или на Nginx, или на обоих? По той же причине (поддержание согласованности сред) и для большей безопасности мы завершаем HTTPS на балансировщике нагрузки, а затем повторно шифруем трафик на HTTPS между балансировщиками нагрузки и нашими веб-серверами, поэтому, если мы подключаемся напрямую к веб-серверам, они по-прежнему обслуживаются HTTPS.

Если ваши веб-серверы NGinx не подключены к HTTPS, то определенные заголовки (HSTS), конечно, НЕ должны быть установлены на веб-сервере, но это, очевидно, вызывает вопросы о том, как вы можете разрабатывать и тестировать влияние этих заголовков, когда эти заголовки не устанавливаются в среде. без балансировщика нагрузки.

Да, поскольку работа с соединениями - это работа внешнего интерфейса. Ваше приложение занято своим делом, лучше оставить все ресурсы только для этого. SSL / TLS, общие заголовки, перенаправления, балансировка, блокировка, удаление и т. Д. Лучше всего обрабатывать до того, как они попадут в приложение. Это также дает приятную общую точку для настройки в качестве бонуса.