Size: a a a

2020 January 17

КЛ

Константин Лебедев in nginx_ru
И как поправить?
источник

Y

Yuri in nginx_ru
Pavel Kozlov
Товарищи, а каким образом можно в локейшене разруливать такую ситуацию: Нужно в зависимости от source_ip проксировать в разные proxy_pass? Я знаю, что if - это плохо, но вот такое будет работать?  
То есть, если запрос приходит изнутри с некоторого IP, то посылать на некоторый внешний эндпоинт. Если с той стороны к nginx обращение, чтобы он сервису внутри пересылал. Сервисы с обоих сторон работают асинхронно, они не держат открытую сессию, то есть ушел запрос, закрылось соединение, потом с той стороны сервис посылает ответ первому серивису, закрылось соединение.
location / {
       if ($remote_addr = "10.10.10.10") {
       set $proxy_pas "https://183.23.10.4/somepath";
        }
       if ($remote_addr= "183.23.10.4") {
       set $proxy_pas "http://10.10.10.10:8080";
        }
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_request_buffering off;
     proxy_pass $proxy_pas;
   }

Мапами, к сожалению, можно только в http контексте, а туда у меня доступа нет =(
Если ты вынесешь map за пределы server {} в этом же файле - это и будет http {}
источник

EI

Edouard Ispravnikov in nginx_ru
Привет. Странный вопрос: есть ли возможность запрос к определенному location броадкастить на все апстримы? Здорово утрируя - все балансится штатно, а кастомный location /a/b/c - отправляется ко всем нодам балансера? Спасибо)
источник

MD

M Dan in nginx_ru
lua?
источник

EI

Edouard Ispravnikov in nginx_ru
Кстати да, вариант
источник

MD

M Dan in nginx_ru
если лень луа, можно просто сделать какую-нить парашу на ноде и она будет этим заниматься
источник

MD

M Dan in nginx_ru
а так скорее всего луа
источник

EI

Edouard Ispravnikov in nginx_ru
Ну не лень, а в плане может есть proxy pass all +-
источник

AN

Anton Noginov in nginx_ru
Edouard Ispravnikov
Привет. Странный вопрос: есть ли возможность запрос к определенному location броадкастить на все апстримы? Здорово утрируя - все балансится штатно, а кастомный location /a/b/c - отправляется ко всем нодам балансера? Спасибо)
Можно поприседать с post_action, но это несколько костыльно.
источник

EI

Edouard Ispravnikov in nginx_ru
Ага. Спасибо за направление
источник

Y

Yuri in nginx_ru
Edouard Ispravnikov
Привет. Странный вопрос: есть ли возможность запрос к определенному location броадкастить на все апстримы? Здорово утрируя - все балансится штатно, а кастомный location /a/b/c - отправляется ко всем нодам балансера? Спасибо)
источник

EI

Edouard Ispravnikov in nginx_ru
Спасибо
источник

D

Denis in nginx_ru
Edouard Ispravnikov
Привет. Странный вопрос: есть ли возможность запрос к определенному location броадкастить на все апстримы? Здорово утрируя - все балансится штатно, а кастомный location /a/b/c - отправляется ко всем нодам балансера? Спасибо)
источник

АБ

Анатолий Безгубов in nginx_ru
Всем привет! Возник такой вопрос

Есть двойное проксирование на nginx-ах. Хочется со своих адресов мапить реальные ip в переменную


Так сделать, к сожалению, нельзя
map $remote_addr $header_ip {
   default $remote_addr;
   1.2.3.4/24 $http_x_real_ip; # ext network
   172.16.0.1/24  $http_x_real_ip; # int network
}


Хотел сделать так

geo $header_ip {
   default $remote_addr;
   1.2.3.4/24 $http_x_real_ip; # ext network
   192.168.1.0/24  $http_x_real_ip; # int network
}


но модуль geo не подставляет значение переменной, а подставляет строку, то есть в моем примере он вставляет в $header_ip как есть "$remote_addr" в виде строки. как быть? перечислять все адреса в map так себе вариант
источник

Y

Yuri in nginx_ru
map $geoip_country_code $geo {
 default 1;
 RU 0;
 UA 2;
 US 3;
 GB 4;
 BY 6;
 KZ 7;
 CA 8;
 FR 9;
 DE 10;
 IL 11;
}


proxy_set_header X-GEO $geo;
источник

АБ

Анатолий Безгубов in nginx_ru
Yuri
map $geoip_country_code $geo {
 default 1;
 RU 0;
 UA 2;
 US 3;
 GB 4;
 BY 6;
 KZ 7;
 CA 8;
 FR 9;
 DE 10;
 IL 11;
}


proxy_set_header X-GEO $geo;
и что это значит?
источник

Y

Yuri in nginx_ru
а на бэкенде уже ловишь хедер X-GEO и смотришь его значение
источник

Y

Yuri in nginx_ru
По тому же принципу и с адресами и с чем угодно можно делать
источник

АБ

Анатолий Безгубов in nginx_ru
источник

Y

Yuri in nginx_ru
Или я не понял. Задача в конце концов какая?
источник