Как в nginx сделать проксирование динамически?

Всем привет.

Стоит задача динамического проксирования на разные сервера в зависимости от поддомена (на какой сервер проксировать, решается исходя из информации, которая лежит в redis(через lua)). Т.е lua скрипт заполняет переменную $server = она ровна либо 1 либо 2.
Сервер openresty.

location /
{
set $server "";
set $redisPort "6379";
set $redisDatabase "22";
set $redisHost "localhost";
set $domain "domain.ru";
# lua скрипт заполняет переменную $server = она ровна либо 1 либо 2
access_by_lua_file "/home/lua-scripts/subdomain.lua";

# Здесь нужен код, который будет делать проксирование в зависимости от параметра $server
}

Как сделать таким образом, чтобы если переменная сервер $server = 1 - проксирование не делать вообще (оставаться на этом сервере для обработки php), если 2 - делать = proxy_pass http://122.22.22:6789 ?
Пробовал через if ($server = 2) { proxy_pass http://122.22.22:6789 } - но не работает почему-то.

Заранее благодарен
  • Вопрос задан
  • 560 просмотров
Пригласить эксперта
Ответы на вопрос 3
piromanlynx
@piromanlynx
Системный администратор в Perfect Solutions
Модуль Map в помощь: nginx.org/ru/docs/http/ngx_http_map_module.html
Ответ написан
Комментировать
gromdron
@gromdron
Работаю с Bitrix24
Пробовали:

proxy_pass http://127.0.0.1:6789;

if ( $server ~ 2 ) {
	proxy_pass http://122.22.22:6789;
}
Ответ написан
Комментировать
@ralaton121
Например, через Lua-модуль.
А Lua вы уже изучаете, судя по вашим вопросам

https://habrahabr.ru/post/321864/
https://habrahabr.ru/company/2gis/blog/199504/
https://habrahabr.ru/post/215237/
https://habrahabr.ru/post/326486/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы