Upstream и заголовок Host
CoDDoC
coddoc на mail.ru
Вт Янв 22 06:54:12 UTC 2019
Доброе время суток!
Тестовый сервер: test.local. В нем тестовый кластер:
upstream cdn {
server <IP_1>:<port_1>;
server <IP_2>:<port_2>;
....
}
или:
upstream cdn {
server cdn001.test.local:<port_1>;
server cdn002.test.local:<port_2>;
....
}
Не принципиально, ибо "cdn001.test.local" резолвится в <IP_1> и т.д.
Само собой, "proxy_http_version 1.1;" и из какого-то локейшена "proxy_pass http://cdn;"
Теперь смотрю, что приходит, например, на выбранный бэкенд.
Ожидаю там увидеть в заголовке Host значение <IP> или 'cdn###.test.local'.
Вижу: http header: "Host: cdn". Что не так?
Входящий контроль проверяет правильность заголовка Host.
Все, что не соответствуют разрешенным, посылаются на 400. Можно, конечно, добавить фильтрацию по белому списку, что-то типа "такой-то IP должен прислать такой-то заголовок". Но (ИМХО) костыль.
proxy_set_header 'Host' $upstream_addr; - бесполезно.
$upstream_addr получает значение ПОСЛЕ proxy_pass.
Попутно вопрос о $upstream_addr.
Ее можно еще как-то использовать, кроме как в логах? Например, отправить в php, но без костылей?
Спасибо.
--
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20190122/40d8e0f6/attachment.html>
Подробная информация о списке рассылки nginx-ru