<div dir="ltr">Примеры ниже дают только идею реализации, детали реализации нужно проработать.<br><br>Вариант 1.<br><br><font face="monospace, monospace">map $http_host $backend {</font><div><font face="monospace, monospace"> <a href="http://NNN1.example.com">NNN1.example.com</a> IP_ADDR_FOR_NNN1/;<br> <a href="http://NNN2.example.com">NNN2.example.com</a> IP_ADDR_FOR_NNN2/;</font></div><div><font face="monospace, monospace"><br>}<br>...<br>proxy_pass http://$backend<br><br></font>Вариант 2.<br><br>Свой сервис который выдает X-Accel-Redirect: /use_host/IP_ADDR_FOR_NNN<br><br><br><font face="monospace, monospace">location / {<br> proxy_pass <a href="http://myservice">http://myservice</a>;<br>}<br><br>location ~* ^/use_host/(.*)$ {<br> internal; <br> proxy_pass http://$1;<br>}<br></font></div><div><br><br><br>Вариант 3.</div><div><br></div><div><div style="color:rgb(0,0,0);font-size:12.8px">> по очень <span style="font-size:12.8px">простому алгоритму вычисляется внутренний IP-адрес<br></span><span style="font-size:small;color:rgb(34,34,34)">Если алгоритм можно описать регулярным выражением.</span><span style="font-size:12.8px"><br></span></div><font face="monospace, monospace"><br>location / {<br> rewrite / /use_host/$http_host;<br>}<br><br>location ~ ^/use_host/(\w+).<a href="http://example.com">example.com</a>$ {<br> internal;<br> proxy_pass <a href="http://P_ADDR_FOR_">http://P_ADDR_FOR_</a>$1;<br>}</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"><br></font>Вариант 4. <br><a href="http://nginx.org/ru/docs/http/ngx_http_perl_module.html">http://nginx.org/ru/docs/http/ngx_http_perl_module.html</a><br><br>Вариант 5. <br><a href="https://github.com/openresty/lua-nginx-module">https://github.com/openresty/lua-nginx-module</a><br><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">17 апреля 2017 г., 16:18 пользователь Alexander Simakov <span dir="ltr"><<a href="mailto:xdr.box@gmail.com" target="_blank">xdr.box@gmail.com</a>></span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Думаю что нет. Мне ведь не нужно балансировать нагрузку<div>между несколькими <span id="m_571180555164073486m_-2109000981337888097:o4.16">бэкэндами</span>.</div><div><br></div><div>Требуется все запросы на определённый домен всегда</div><div>перенаправлять на заданный <span id="m_571180555164073486m_-2109000981337888097:o4.17">IP</span>. Таких пар "домен -> <span id="m_571180555164073486m_-2109000981337888097:o4.18">IP</span>"</div><div>может быть несколько десятков тысяч, при том, что нужный</div><div><span id="m_571180555164073486m_-2109000981337888097:o4.19">IP</span>-адрес вычисляется по домену одной строчкой кода.</div><div>Вот и возник вопрос: можно ли обойтись без длинного</div><div>и однообразного <span id="m_571180555164073486m_-2109000981337888097:o4.20">конфига</span>.</div><div><br></div></div><div class="gmail_extra"><br clear="all"><div><div class="m_571180555164073486gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>С уважением,</div><div>Александр Симаков</div></div></div></div></div></div>
<br><div class="gmail_quote">17 апреля 2017 г., 15:48 пользователь Дмитрий Андреев <span dir="ltr"><<a href="mailto:me@kemko.ru" target="_blank">me@kemko.ru</a>></span> написал:<div><div class="h5"><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><a href="http://nginx.org/ru/docs/http/ngx_http_upstream_module.html#hash" target="_blank">http://nginx.org/ru/docs/http/<wbr>ngx_http_upstream_module.html#<wbr>hash</a> - не подходит?</div><br><div class="gmail_quote"><div dir="ltr">пн, 17 апр. 2017 г. в 14:37, Alexander Simakov <<a href="mailto:xdr.box@gmail.com" target="_blank">xdr.box@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="m_571180555164073486h5"><div dir="ltr"><div>Добрый день!</div><div><br></div><div>Подскажите, пожалуйста, как наиболее оптимальным</div><div>способом решить следующую задачу:</div><div><br></div><div>NGINX используется качестве прокси для входящих</div><div>из интернета HTTPS и WebSocket-соединений.</div><div><br></div><div>Запросы приходят на домены вида <a href="http://NNNN.example.com" target="_blank">NNNN.example.com</a>,</div><div>где NNNN - некое число. Для каждого NNNN по очень</div><div>простому алгоритму вычисляется внутренний IP-адрес</div><div>на который нужно пробросить данное соединение.</div><div><br></div><div>Вот пример конфигурации:</div><div><br></div><div>==8<==</div><div><div>server {</div><div> listen 443;</div><div> server_name <a href="http://NNNN.example.com" target="_blank">NNNN.example.com</a>;</div><div><br></div><div> location / {</div><div> proxy_pass <a href="http://IP_ADDR_FOR_NNNN/" target="_blank">http://IP_ADDR_FOR_NNNN/</a>;</div><div> }</div><div><br></div><div> location /ws/ {</div><div> proxy_pass <a href="http://IP_ADDR_FOR_NNNN/ws/" target="_blank">http://IP_ADDR_FOR_NNNN/ws/</a>;</div><div> proxy_http_version 1.1;</div><div> proxy_set_header Upgrade $http_upgrade;</div><div> proxy_set_header Connection "upgrade";</div><div> }</div><div>}</div></div><div>==8<==<br></div><div><br></div><div>Сейчас я вынужден программно генерировать большие</div><div>статические файлы-портянки в которых порядка 1000</div><div>таких секций.</div><div><br></div><div>Подскажите, можно ли в данном примере как-то заскриптовать</div><div>логику получения IP-адреса по NNNN и иметь один компактный</div><div>и универсальный файл? Или, может, как-то предвычислить для</div><div>NGINX хеш { NNNN -> IP_ADDR_FOR_NNNN } и использовать его</div><div>в конфиге?</div><div><br></div><div>Спасибо.</div><br clear="all"><div><div class="m_571180555164073486m_6666464869569119389m_1609161737072475354m_121333429317486956gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>С уважением,</div><div>Александр Симаков</div></div></div></div></div></div>
</div></div></div>
______________________________<wbr>_________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailm<wbr>an/listinfo/nginx-ru</a></blockquote></div>
<br>______________________________<wbr>_________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailm<wbr>an/listinfo/nginx-ru</a><br></blockquote></div></div></div><br></div>
<br>______________________________<wbr>_________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/<wbr>mailman/listinfo/nginx-ru</a><br></blockquote></div><br></div>