Welcome! Log In Create A New Profile

Advanced

Re: Можно ли заскриптовать несложную логику прямо в конфиге?

Serge Negodyuck
April 28, 2017 04:18PM
Примеры ниже дают только идею реализации, детали реализации нужно
проработать.

Вариант 1.

map $http_host $backend {
NNN1.example.com IP_ADDR_FOR_NNN1/;
NNN2.example.com IP_ADDR_FOR_NNN2/;

}
...
proxy_pass http://$backend

Вариант 2.

Свой сервис который выдает X-Accel-Redirect: /use_host/IP_ADDR_FOR_NNN


location / {
proxy_pass http://myservice;
}

location ~* ^/use_host/(.*)$ {
internal;
proxy_pass http://$1;
}



Вариант 3.

> по очень простому алгоритму вычисляется внутренний IP-адрес
Если алгоритм можно описать регулярным выражением.

location / {
rewrite / /use_host/$http_host;
}

location ~ ^/use_host/(\w+).example.com$ {
internal;
proxy_pass http://P_ADDR_FOR_$1;
}


Вариант 4.
http://nginx.org/ru/docs/http/ngx_http_perl_module.html

Вариант 5.
https://github.com/openresty/lua-nginx-module


17 апреля 2017 г., 16:18 пользователь Alexander Simakov <xdr.box@gmail.com>
написал:

> Думаю что нет. Мне ведь не нужно балансировать нагрузку
> между несколькими бэкэндами.
>
> Требуется все запросы на определённый домен всегда
> перенаправлять на заданный IP. Таких пар "домен -> IP"
> может быть несколько десятков тысяч, при том, что нужный
> IP-адрес вычисляется по домену одной строчкой кода.
> Вот и возник вопрос: можно ли обойтись без длинного
> и однообразного конфига.
>
>
> С уважением,
> Александр Симаков
>
> 17 апреля 2017 г., 15:48 пользователь Дмитрий Андреев <me@kemko.ru>
> написал:
>
> http://nginx.org/ru/docs/http/ngx_http_upstream_module.html#hash - не
>> подходит?
>>
>> пн, 17 апр. 2017 г. в 14:37, Alexander Simakov <xdr.box@gmail.com>:
>>
>>> Добрый день!
>>>
>>> Подскажите, пожалуйста, как наиболее оптимальным
>>> способом решить следующую задачу:
>>>
>>> NGINX используется качестве прокси для входящих
>>> из интернета HTTPS и WebSocket-соединений.
>>>
>>> Запросы приходят на домены вида NNNN.example.com,
>>> где NNNN - некое число. Для каждого NNNN по очень
>>> простому алгоритму вычисляется внутренний IP-адрес
>>> на который нужно пробросить данное соединение.
>>>
>>> Вот пример конфигурации:
>>>
>>> ==8<==
>>> server {
>>> listen 443;
>>> server_name NNNN.example.com;
>>>
>>> location / {
>>> proxy_pass http://IP_ADDR_FOR_NNNN/;
>>> }
>>>
>>> location /ws/ {
>>> proxy_pass http://IP_ADDR_FOR_NNNN/ws/;
>>> proxy_http_version 1.1;
>>> proxy_set_header Upgrade $http_upgrade;
>>> proxy_set_header Connection "upgrade";
>>> }
>>> }
>>> ==8<==
>>>
>>> Сейчас я вынужден программно генерировать большие
>>> статические файлы-портянки в которых порядка 1000
>>> таких секций.
>>>
>>> Подскажите, можно ли в данном примере как-то заскриптовать
>>> логику получения IP-адреса по NNNN и иметь один компактный
>>> и универсальный файл? Или, может, как-то предвычислить для
>>> NGINX хеш { NNNN -> IP_ADDR_FOR_NNNN } и использовать его
>>> в конфиге?
>>>
>>> Спасибо.
>>>
>>> С уважением,
>>> Александр Симаков
>>> _______________________________________________
>>> nginx-ru mailing list
>>> nginx-ru@nginx.org
>>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>>
>> _______________________________________________
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Можно ли заскриптовать несложную логику прямо в конфиге?

Alexander Simakov April 17, 2017 07:38AM

Re: Можно ли заскриптовать несложную логику прямо в конфиге?

kemko April 17, 2017 08:50AM

Re: Можно ли заскриптовать несложную логику прямо в конфиге?

Alexander Simakov April 17, 2017 09:20AM

Re: Можно ли заскриптовать несложную логику прямо в конфиге?

Serge Negodyuck April 28, 2017 04:18PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 282
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready