Welcome! Log In Create A New Profile

Advanced

Re: Upstream и заголовок Host

Maxim Dounin
January 22, 2019 09:32AM
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
Subject Author Posted

Upstream и заголовок Host

CoDDoC via nginx-ru January 22, 2019 01:56AM

Re: Upstream и заголовок Host Attachments

Dmitriy Lyalyuev January 22, 2019 02:30AM

Re: Upstream и заголовок Host

Alex Tkachuk January 22, 2019 07:30AM

Re: Upstream и заголовок Host

Maxim Dounin January 22, 2019 09:32AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 78
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready