Hello! On Tue, Jan 22, 2019 at 09:54:12AM +0300, CoDDoC via nginx-ru wrote:
> Доброе время суток! > > Тестовый сервер: 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 "<IP> или 'cdn###.test.local'"? Документация по данному вопросу однозначна, да и, скажем, прописывая в DNS соответствующие A или CNAME-записи никто не ожидает, что в запросах будет заголовок Host, соответствующий содержимому записи. Почему от блоков upstream вдруг ожидается какое-то другое поведение? На всякий случай уточню - вопрос вполне серьёзный, хочется понять, на какие аналогии опираются люди, считающие, что заголовок Host должен зависеть от того, на какой IP-адрес из списка был отправлен запрос. Вроде бы аналогия с DNS очевидна, и она подразумевает именно именно то поведение, которое есть сейчас, но почему-то людей, предполагающих другое поведение, много. [...] > Попутно вопрос о $upstream_addr. > Ее можно еще как-то использовать, кроме как в логах? Например, отправить в > php, но без костылей? Нет. Запрос формируется до выбора бэкенда, на который этот запрос будет отправлен (а в рамках proxy_next_upstream - один и тот же запрос может быть отправлен на несколько бэкендов). Соотвественно переменную $upstream_addr можно использовать в логах (а равно при обработке ответа бэкенда - скажем, в add_header), но бессмысленно использовать в запросе на бэкенд - на момент формирования запроса она всегда будет пустой. -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru