ПРОЕКТЫ 


  АРХИВ 


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: Конфигурация nginx: proxy_pass, include в if, именованные локации, auth_basic


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: Конфигурация nginx: proxy_pass, include в if, именованные локации, auth_basic
  • From: "Alexey Karagodov" <karagodov@xxxxxxxxx>
  • Date: Tue, 27 Nov 2007 13:49:11 +0300
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:references; bh=RbYDaQmEPe8Q9Jsbtee/+mUIo5E2D281JYOBjMoqjyw=; b=TQFTihSEHLq30F+jBWR7KbHAcAC/3nNYM8s8Fms6/4PNoP4Uj6+RDErO37NjAVFg5seU9+pI9a3wj0L0hnTHX6uKNZFv9IH2ACSOG4U3ZS4VIPncHdqfaPR2HRN0Annf8TrbweomvkL8jLz+CAkPP2F0DTZqGHbUBEgIQH0C97k=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:references; b=STi0j97pr6PWi9GJca84AVbOIDBMm7P815Tr6Oy3lE2iCp9aVbEX77Pr0o+A29zol0bwCFb1NQjsZ2PjyMgvVAt0Ipwa3yZedeWu4ST7cZge8mj19HblIP0SSvOEAIiBtPGMWdAfIYcFzVTicvClhFdU16PTngvnbpZeDhKGe+4=
  • In-reply-to: <002a01c830e2$08615dc0$19241940$@ru>
  • References: <002a01c830e2$08615dc0$19241940$@ru>

можно host-ами 

2007/11/27, Анатолий Шарифулин <subscribe@xxxxxxxxxx>:

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

 

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 нельзя, т.е. не получится сделать для каждого субдомена свою авторизацию, только общую.

 

 

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

 

 




 




Copyright © Lexa Software, 1996-2009.