Nginx + Rewrite

bugsmoran
На сайте с 18.02.2010
Offline
223
1041

Народ, туплю. Подскажите как сделать.

Есть ресурс (контейнер сервлетов и потому dir - это webapp-директория):

http://10.10.10.10:8080/dir/

Есть прокси сервер (Nginx):

http://test.com

Задача проксировать Томкат через Nginx. Это делается конечно легко:

    server {
listen 80;
server_name test.com;

location / {
proxy_pass http://10.10.10.10:8080/;
}
}

Но тут есть недостаток:

Если я обарщусь на http://test.com, то увижу корень Томката ( http://10.10.10.10:8080/ ), а чтобы попасть на приложение http://10.10.10.10:8080/dir/ , мне надо и в браузере набрать http://test.com/dir

Поэтому вопрос - как сделать так, чтобы при обращении на http://test.com отображалось содержимое http://10.10.10.10:8080/dir/

Трудность еще в том, что Томкат отдает полный путь и надо сделать какой-то аналог RewriteBase в Nginx-вском варианте. Но как - ума не приложу.

Эта строчка не помогает:

rewrite ^/dir/(.*) /$1 break;

И еще вопрос, через proxy_redirect это не проще сделать?

neznaika
На сайте с 28.06.2006
Offline
356
#1
Дорого покупаю настоящие сайты. Не инвестирую деньги и не беру кредиты.
bugsmoran
На сайте с 18.02.2010
Offline
223
#2

Мой случай там не рассматривается.

M7
На сайте с 11.07.2010
Offline
17
#3

proxy_pass http://10.10.10.10:8080/dir/;

не помогает?

и попробовать еще

proxy_redirect off;

bugsmoran
На сайте с 18.02.2010
Offline
223
#4

Не, не помогает естественно. Я не могу просто брать сайт из другой директории. Например там такая структура сайта:

/dir/folder1/file4

/dir/folder2/file5

/dir/folder3/file6

И файлы ищут друг друга не так:

cd ../folderN/fileN

а так:

cd ../../dir/folderN/fileN

iamsens
На сайте с 26.08.2009
Offline
115
#5

может симлинк надо сделать? =)

Boris A Dolgov
На сайте с 04.07.2007
Offline
215
#6
bugsmoran:
Не, не помогает естественно. Я не могу просто брать сайт из другой директории. Например там такая структура сайта:
/dir/folder1/file4
/dir/folder2/file5
/dir/folder3/file6

И файлы ищут друг друга не так:
cd ../folderN/fileN
а так:
cd ../../dir/folderN/fileN

Так сделать получится только костылями в виде, например, sub_module для замены всех /dir на / и так далее (если я правильно понял, что нужно).

С уважением, Борис Долгов. Администрирование, дешевые лицензии ISPsystem, Parallels, cPanel, DirectAdmin, скины, SSL - ISPlicense.ru (http://www.isplicense.ru/?from=4926)
iamsens
На сайте с 26.08.2009
Offline
115
#7
bugsmoran:
Народ, туплю. Подскажите как сделать.

Есть ресурс (контейнер сервлетов и потому dir - это webapp-директория):
http://10.10.10.10:8080/dir/

Есть прокси сервер (Nginx):
http://test.com

Задача проксировать Томкат через Nginx. Это делается конечно легко:

    server {

listen 80;
server_name test.com;

location / {
proxy_pass http://10.10.10.10:8080/;
}
}


Но тут есть недостаток:
Если я обарщусь на http://test.com, то увижу корень Томката ( http://10.10.10.10:8080/ ), а чтобы попасть на приложение http://10.10.10.10:8080/dir/ , мне надо и в браузере набрать http://test.com/dir

Поэтому вопрос - как сделать так, чтобы при обращении на http://test.com отображалось содержимое http://10.10.10.10:8080/dir/

Трудность еще в том, что Томкат отдает полный путь и надо сделать какой-то аналог RewriteBase в Nginx-вском варианте. Но как - ума не приложу.
Эта строчка не помогает:
rewrite ^/dir/(.*) /$1 break;


И еще вопрос, через proxy_redirect это не проще сделать?

а вобще надо документ рут в томкате менять, нгинкс тут не нужен каг бы

bugsmoran
На сайте с 18.02.2010
Offline
223
#8
iamsens:
а вобще надо документ рут в томкате менять, нгинкс тут не нужен каг бы

У сервлетов все по другому /dir - это и есть докрут. Но обращаться надо с указанием докрута в URL. Таков уж мир Java...

Boris A Dolgov:
Так сделать получится только костылями в виде, например, sub_module для замены всех /dir на / и так далее (если я правильно понял, что нужно).

Спасибо за наводку! Попробую.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий