Получение X-Forwarded за AWS TCP Load Balancer для https

У меня есть балансировщик нагрузки AWS TCP в пуле автомасштабирования. За ним стоит несколько доменов, поэтому я не могу выполнить завершение SSL на балансировщике нагрузки, следовательно, TCP.

Я обновил свой формат ведения журнала, чтобы регистрировать X-Forwarded-For, и это хорошо работает для HTTP, но не для HTTPS.

Форумы не указывают на то, что это невозможно сделать, поскольку здесь говорится о HTTP (S), однако я не могу заставить его работать. Может ли это сработать?

Вот мои сведения о журнале:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" proxy
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
LogFormat "%h %l %u %t \"%r\" %>s %b" common

CustomLog "logs/access_log" combined env=!forwarded
CustomLog "logs/access_log" proxy env=forwarded

Сброс всех атрибутов в PHP Я вижу заголовок для HTTP-запросов, но не для HTTPS, поэтому я не думаю, что это проблема конфигурации.

0
задан 20 May 2017 в 01:45
2 ответа

Хотя я очень сомневаюсь, что X-Forwarded-For работает, когда завершение SSL не выполняется на балансировщике нагрузки, я не нашел окончательного отказа. Однако есть решение, которое я сделал с помощью CloudFront.

Поскольку у вас может быть несколько дистрибутивов, указывающих на один балансировщик нагрузки, а AWS предоставляет сертификаты для SSL, вы можете завершить работу SSL в периферийном местоположении. CloudFront добавит заголовок и перенаправит запрос (при необходимости) в балансировщик нагрузки. Оттуда заголовок попадет на ваш сервер.

0
ответ дан 4 December 2019 в 16:15

ELB не имеет возможности добавить этот заголовок, поскольку этот заголовок является функцией HTTP, а это балансировщик нагрузки TCP. Все, что он знает, это то, что он передает некоторый поток TCP и не более того. Если вам нужен ELB для добавления этого заголовка, вам необходимо завершить HTTPS на балансировщике нагрузки. Оттуда он может связываться с вашими внутренними экземплярами через HTTP или HTTPS по мере необходимости.

1
ответ дан 4 December 2019 в 16:15

Теги

Похожие вопросы