X-Forwarded-Proto с несколькими прокси

Я не могу перенаправить HTTP на HTTPS с помощью Apache из-за наличия более одного прокси между клиентом и сервером.

HTTPS - это прерывается в Интернет-балансировщике нагрузки, все другие устройства (включая сервер Apache, обслуживающий запросы) используют HTTP.

Я вижу, что все, на что Apache смотрит, это X-Forwarded-Proto последнего прокси в цепочке , то есть HTTP.

Как я могу заставить его смотреть на настоящий заголовок X-Forwarded-Proto (удаленного клиента)?

1
задан 31 January 2017 в 04:16
1 ответ

Для перенаправлений, исходящих из HTTP-бэкэнда, единственная директива, которую вы Следует учитывать, что обратный прокси-сервер:

ProxyPassReverse

Если перенаправление происходит из цепочки обратных прокси-серверов, независимо от того, что они отправляют, если у вас есть директива ProxyPassReverse для любого внутреннего имени, Apache изменит хост в Местоположение и схема (http / s), изначально присланные клиентом.

Хорошо, что ProxyPassReverse можно указывать столько раз, сколько необходимо.

Так, например, если ваш обратный прокси-сервер размещает общедоступный ] https://main.example.com и у вас есть множество бэкэндов, которые отправляют вам перенаправления, например:

Location: http://something.example.com/somesome
Location: http://otherthing.internal.example.com/heresomething/jkjljl.whatever
Location: http://deepdowninthechain.some.exampe.com/therethere/there/there

Все, что вам нужно сделать, это добавить:

ProxyPassReverse / http://something.example.com/
ProxyPassReverse / http://otherthing.internal.example.com/
ProxyPassReverse / http://deepdowninthechain.some.exampe.com/

И Apache HTTPD вернет все эти заголовки Location в то, что запрашивал исходный клиент: https://main.example.com/whatever ...

0
ответ дан 4 December 2019 в 05:18

Теги

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