RE: Конфигурация nginx: proxy_pass, include в if, именованные локации, auth_basic

Анатолий Шарифулин subscribe at tochkak.ru
Tue Nov 27 14:17:22 MSK 2007


Ну-да, в принципе верно J 

Что-то я забыл про это, решил все сделать одним.

 

 

С уважением и наилучшими пожеланиями,

 Анатолий Шарифулин.

 

h <http://www.sharifulin.ru/> ttp://www.sharifulin.ru/

mailto: <mailto:sharifulin at tochkak.ru> tollik at mail.ru

scype:sharifulin

icq:251224060

 

From: owner-nginx-ru at sysoev.ru [mailto:owner-nginx-ru at sysoev.ru] On Behalf Of Alexey Karagodov
Sent: Tuesday, November 27, 2007 1:49 PM
To: nginx-ru at sysoev.ru
Subject: Re: Конфигурация nginx: proxy_pass, include в if, именованные локации, auth_basic

 

можно host-ами 

2007/11/27, Анатолий Шарифулин <subscribe at tochkak.ru>:

Приветствую!

 

Proxy_pass не понимает переменные, ни в качестве всего URI, ни в качестве порта.

 

Пример:

map  $http_host  $my_port  {

                game.rnd.example.com    8001;

                admin.rnd.example.com   8081;

                

                game.msk.example.com    8004;

                admin.msk.example.com   8084;

                

                game.test.example.com   8003;

                admin.test.example.com  8083;

                

                game.new.example.com    8002;

                admin.new.example.com   8082;

}

 

location / {

                if  ($my_port) {

                               proxy_pass http://127.0.0.1:$my_port;

                               break;

                }

}

 

Что не так?

 

 

Решил обойти проблему.

location / {

                if ($http_host ~ rnd\.example\.com$) {

                               include /path/rnd.example.com/nginx.conf;

                }

                ...

}

Так не работает, пишет, что include не определен в if. 

 

Попробовал через именованный локации, только не знаю как их вызвать.

Вызвал через error_page, но только GET запросы попадают через error_page на именованную локацию, остальные – ошибка 405.

location / {

                if ($http_host ~ rnd\.example\.com$) {

                               error_page 404 = @rnd;

                }

                ...

}

location @rnd {

              include /path/rnd.example.com/nginx.conf;

}

…

 

В итоге написал в лоб, но решение мне не нравится:

 

if ($http_host ~ ^game\.rnd\.example\.com$) {

                proxy_pass http://127.0.0.1:8001;

                break;

}

if ($http_host ~ ^admin\.rnd\.example\.com$) {

                proxy_pass http://127.0.0.1:8081;

                break;

}

 

…

 

if ($http_host ~ ^game\.test\.example\.com$) {

                proxy_pass http://127.0.0.1:8003;

                break;

}

if ($http_host ~ ^admin\.test\.example\.com$) {

                proxy_pass http://127.0.0.1:8083;

                break;

}

 

Плюс auth_basic использовать в if нельзя, т.е. не получится сделать для каждого субдомена свою авторизацию, только общую.

 

 

Что посоветуете?

 

 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20071127/555013ac/attachment.html>


More information about the nginx-ru mailing list