Welcome! Log In Create A New Profile

Advanced

Re: Добавление заголовка после upstream

Ekaterina Kukushkina
July 29, 2015 03:26AM
Привет.

On Wed, Jul 29, 2015 at 01:34:59AM -0400, Budulianin wrote:
> >В ответ клиенту добавить?
> Добавить в запрос, который перенаправится какой-то ноде, после того, как она
> будет выбрана в upstream.
> Т.е. upstream уже выбран, мы его только теперь знаем(адрес ноды) и тогда мы
> добавляем его в header и он отправляется в ноду.
>

Запрос для передачи на апстрим формируется один раз и после этого не
меняется. И в этом неизменном виде передается на выбранный апстрим. Если
выбранный не отвечает, тот же самый запрос, сформированный ранее, может
передаваться на другой апстрим (в зависимости от настроек
proxy_next_upstream). Таким образом, эта переменная может содержать не
только IP адрес, но и список IP адресов всех потыканных серверов.

Вообще, использование upstream предполагает и требует использование
идентично настроенных бэкэндов. Если они у вас различаются, то надо
разносить их по разным группам и проксировать на разные группы в разных
локейшенах.

Есть несолько решений, которые позволяют добиться желаемого.
1. Для каждого бэкэнда определить отдельный виртуальный сервер и повесить
его на какой-нибудь 127.0.0.1:9995 и т.д. В нем можно указать желаемые
заголовки, специфичные для данного сервера. И в upstream определять не сами
бэкэнды, а эти виртуальные сервера. (Но не забудьте сохранить все кастомные
заголовки)

2. Отказываться от алгоритмов баллансировки nginx и мутить свой лунапарк,
например, через map задавать используемый апстрим для группы ипользуемых
key. Все key перечислять не надо, можно воспоользоваться регулярными
выражениями. И после этого в proxy_pass указывать значение полученное в
map. В этом случае на бэкэнды будет прилеть хидер Host, в котором будет
указан желаемый IP адрес.
Но, увы, это полностью убьет все плюшки upstream (такие как, next_upstream,
weight и т.д)

Но зачем все это?

> Если ставить proxy_set_header рядом с proxy_pass, то заголовок не
> добавляется, я так понимаю, что переменная ещё пустая, поэтому
> заголовок не ставится. Но где уже известна эта переменная? Только в блоке
> upstream? Но там нельзя устанавливать заголовок.
>
> map $http_upgrade $connection_upgrade {
> default upgrade;
> '' close;
> }
>
> upstream tornado {
> hash $arg_key;
>
> server 127.0.0.1:9995;
> server 127.0.0.1:9996;
> server 127.0.0.1:9997;
> server 127.0.0.1:9998;
> server 127.0.0.1:9999;
>
> }
>
>
> server {
> listen 8080 default_server;
>
> access_log /var/log/nginx/prototypes-nginx-access.log;
> error_log /var/log/nginx/prototypes-nginx-error.log;
>
> location /ws/ {
> proxy_pass http://tornado;
> proxy_set_header Test-Header1 123;
> proxy_set_header Test-Header2 $upstream_addr;
> proxy_set_header Test-Header3 $host;
> proxy_http_version 1.1;
> proxy_set_header Upgrade $http_upgrade;
> proxy_set_header Connection $connection_upgrade;
> }
>
> }
>

--
Ekaterina Kukushkina

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Добавление заголовка после upstream

Budulianin July 28, 2015 06:39PM

Re: Добавление заголовка после upstream

Alexey Malov July 28, 2015 11:28PM

Re: Добавление заголовка после upstream

Budulianin July 29, 2015 01:34AM

Re: Добавление заголовка после upstream

Alexey Malov July 29, 2015 03:22AM

Re: Добавление заголовка после upstream

Ekaterina Kukushkina July 29, 2015 03:26AM

Re: Добавление заголовка после upstream

Budulianin July 29, 2015 05:56AM

Re: Добавление заголовка после upstream

Andrey Oktyabrskiy July 29, 2015 09:40AM

Re: Добавление заголовка после upstream

denis August 05, 2015 07:08AM

Re: Добавление заголовка после upstream

mva August 05, 2015 09:00AM

Re: Добавление заголовка после upstream

Konstantin Tokarev August 05, 2015 09:14AM

Re: Добавление заголовка после upstream

denis August 05, 2015 10:04AM

Re: Добавление заголовка после upstream

Aleksandr Sytar August 05, 2015 10:08AM

Re: Добавление заголовка после upstream

denis August 05, 2015 10:12AM

Re: Добавление заголовка после upstream

Maxim Konovalov August 05, 2015 10:14AM

Re: Добавление заголовка после upstream

denis August 05, 2015 10:24AM

Re: Добавление заголовка после upstream

Maxim Konovalov August 05, 2015 11:24AM

Re: Добавление заголовка после upstream

denis August 05, 2015 11:40AM

Re: Добавление заголовка после upstream

Maxim Konovalov August 05, 2015 11:54AM

Re: Добавление заголовка после upstream

Ekaterina Kukushkina July 29, 2015 11:42AM

Re: Добавление заголовка после upstream

Budulianin July 29, 2015 02:11PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 90
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