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