Это хорошая практика, чтобы установить заголовки HTTP в балансировщик нагрузки?

Я управляю настройкой, где за обратным прокси-сервером nginx находятся два сервера приложений ngnix. Я хотел бы установить некоторые заголовки, такие как 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. 

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

3 ответа

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

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

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

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

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

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

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

Другие вопросы по тегам