ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: proxy_redirect & $vars



09.11.2010 14:37, Maxim Dounin wrote:
Hello!

On Tue, Nov 09, 2010 at 02:42:28PM +0300, Alex L. Demidov wrote:

Есть nginx front-end, который слушает на всех хостах вида
^[0-9]+.example.com и делает proxy_pass на 127.0.0.0 и порт
соответствующий поддомену example.com, например, при обращении к
12345.example.com идет proxy_pass к 127.0.0.1:12345. На 127.0.0.1
могут слушать сотни и тысячи портов, которые на самом деле
туннелятся на внешние железки, отвечающие по http, причем эти
туннели могут динамически появляться и пропадать.

Проблема собственно в том, что одна из этих железок выдает 302
Redirect, которые нужно переписать, но proxy_redirect не понимает
переменные в первом параметре, как в примере ниже, где
закомментировано:

-----------------------------------------------------------------------

http {
     perl_set $decoded_port '...
          perl code to extract prefix from Host: header
     ...';

     server {
         listen       80;
         server_name  ~^[0-9]+\.example\.com;

         location / {
             proxy_pass         http://127.0.0.1:$decoded_port;

#           proxy_redirect     http://127.0.0.1:$decoded_port/ #                              http://$decoded_port.example.com/;
             proxy_redirect     http://127.0.0.1:12345/                                          http://$decoded_port.example.com/;
         }
     }
}
-----------------------------------------------------------------------

Вопросы:

Есть ли какие-либо варианты переписать Redirect в данной ситуации?

Можно ещё попробовать через proxy_hide_header +
proxy_intercept_errors + error_page 302 + add_header.

Если нагенерировать 64K строчек со всеми портами - не упрусь ли я в
какие-либо ограничения?

Нет, но применение proxy_redirect'ов делается до первого
совпадения, так что 64k строк - это не очень оптимальное решение.

А если генерить server'а с одним нужным proxy_redirect, а не proxy_redirect'ы со всеми портами в одном server'е, то должно получиться более оптимально, как я понимаю.

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.