Axell 11.06.2011 23:29
Есть вопрос! — nginx proxy_pass. Вопрос знатокам.
Всем привет!Имеется несколько виртуальных серверов с различными сервисами и один из них крутит nginx для разруливания запросов по остальным. Разруливать нужно примерно так:
http://domain.com/wiki -> http://192.168.122.3
http://domain.com/panel -> http://192.168.122.4
192.168.122.0/24 - локальная подсеть между виртуальными серверами.
Казалось бы, всё просто. В конфиге nginx:
location /wiki/ {
proxy_redirect off;
proxy_pass http://192.168.122.3/;
}
proxy_redirect off;
proxy_pass http://192.168.122.3/;
}
Таким образом, на виртуальный хост с вики уходит запрос GET /
На этом хосте крутится апач с единственной целью - отдавать вики. DocumentRoot = /var/www/wiki.
Всё просто замечательно, но для апача вики находится в корне, по этому на странице мы получаем пути к картинкам и прочему /images/foo.gif, а надо бы /wiki/images/foo.gif, т.к. через nginx запросы на эти картинки должны уходить именно путём с /wiki. В противном случае они не попадают под правило /wiki/ и не уходят на нужный апач.
Поддомены использовать не могу, только URL. Вариатны решения:
1. Отдавать в апач запрос с GET /wiki. Но mediawiki такая капризная, что при обращении в /wiki/index.php перенаправляет запрос на /wiki/index.php/Main_Page или что-то ещё в этом роде. В итоге nginx снова получает /wiki, снова передаёт на апач, а там вики снова перенаправляет нас. В итоге редиректы зацикливаются.
2. ???
Вопрос: есть ли разумное решение?) Как бы так извратиться, чтобы апач думал, что он работает не с /, а с /wiki. Или может со стороны nginx это решается... (настройка mod_rewrite с /wiki на / на апаче приводит к тому же эффетку) не могу представить как.
Axell 12.06.2011 20:57 #
+ 0 -
Решено, блеать! Это стоило мне двух дней жизни. Позже отпишу правильный конфиг :)