Страница 1 из 1

Помогите с Apache RewriteRule

Добавлено: 2012-05-02 21:16:00
kharkov_max
Добрый день.

Необходимо через Apache22 пробросить в инет внутренний сайт (реализовать обратный прокси).
ProxyPass не подходит - ибо с этим сайтом не работает.

Внутренний сайт имеет след ссылку http://192.168.0.1:8080 - повесить на другой порт нет возможности.
Из инета это должно выглядеть как http://my.host.ru/mysite

Т.е.
http://my.host.ru/mysite -> http://192.168.0.1:8080/
http://my.host.ru/mysite <- http://192.168.0.1:8080/

Делаю так

Код: Выделить всё

RewriteRule ^(.*)/mysite(/*) http://192.168.0.1:8080/$1 [P]
Отображается "корявое" окно логин/пароль внутреннего сайта, после ввода логина и пароля ссылка http://my.host.ru/mysite превращается в http://my.host.ru/login.html ну и соответственно ошибка т.к. такого файла нет.

Проблемы для меня 2
1. Как правильно подменить ссылку
2. Как пробросить на другой хост/порт при помощи RewriteRule

Спасибо.

Re: Помогите с Apache RewriteRule

Добавлено: 2012-05-02 21:56:58
kharkov_max
Так

Код: Выделить всё

RewriteRule ^(.*)/mysite(/*)$ http://192.168.0.1:8080/$2 [P]
Стала нормально отображаться стартовая страница внутреннего сайта (логин/пароль)
Но после его ввода сайт переходит на tp://my.host.ru/login.html и ошибка.

Re: Помогите с Apache RewriteRule

Добавлено: 2012-05-03 12:28:57
dmtr
ProxyPass не подходит - ибо с этим сайтом не работает.
а что значит не работает?
ну и если с ним действительно никак, можт nginx?

Re: Помогите с Apache RewriteRule

Добавлено: 2012-05-03 15:47:52
kharkov_max
dmtr писал(а):
ProxyPass не подходит - ибо с этим сайтом не работает.
а что значит не работает?
ну и если с ним действительно никак, можт nginx?
На сколько я знаю ProxyPass может проксировать с порта на порт и на другой хост, но не может изменить url ссылки.
Вот поэтому и не подходит

А RewriteRule вполне могут реализовать задачу.
Вот только не знаю как правильно правило прописать

Re: Помогите с Apache RewriteRule

Добавлено: 2012-05-03 16:57:18
dmtr
kharkov_max писал(а):На сколько я знаю ProxyPass может проксировать с порта на порт и на другой хост, но не может изменить url ссылки.
Вот поэтому и не подходит
разве это не то что нужно:
Suppose the local server has address http://example.com/; then

ProxyPass /mirror/foo/ http://backend.example.com/

will cause a local request for http://example.com/mirror/foo/bar to be internally converted into a proxy request to http://backend.example.com/bar.
соответственно у вас будет

Код: Выделить всё

ProxyPass /mysite/ http://192.168.0.1:8080/

Re: Помогите с Apache RewriteRule

Добавлено: 2012-05-03 20:57:35
FiL
kharkov_max писал(а):Так

Код: Выделить всё

RewriteRule ^(.*)/mysite(/*)$ http://192.168.0.1:8080/$2 [P]
Стала нормально отображаться стартовая страница внутреннего сайта (логин/пароль)
Но после его ввода сайт переходит на tp://my.host.ru/login.html и ошибка.
A это от прокси не зависит. Сервер посылает клиенту ссылку в контенте и прокся этого поменять не может.
Если там ссылка идет как /login.html, то клиент и пытается перейти на /login.html на текущем сайте.
Хорошо еще, что ссылка не идет в виде http://192.168.0.1:8080/login.html потому как тогда оно-бы вообще в ебеня уходило.

Надо править сами странички на сервере и менять ссылки на относительные. Без этого никуда.

Re: Помогите с Apache RewriteRule

Добавлено: 2012-05-04 5:45:54
kharkov_max
dmtr писал(а):
kharkov_max писал(а):На сколько я знаю ProxyPass может проксировать с порта на порт и на другой хост, но не может изменить url ссылки.
Вот поэтому и не подходит
разве это не то что нужно:
Suppose the local server has address http://example.com/; then

ProxyPass /mirror/foo/ http://backend.example.com/

will cause a local request for http://example.com/mirror/foo/bar to be internally converted into a proxy request to http://backend.example.com/bar.
соответственно у вас будет

Код: Выделить всё

ProxyPass /mysite/ http://192.168.0.1:8080/
Так пробовал делать. Получается так.
Отображается первая страница внутреннего сайта, логин/пароль, и после ввода идет переход на _htp://my.host.ru/login.html и ошибка.
FiL писал(а):
kharkov_max писал(а):Так

Код: Выделить всё

RewriteRule ^(.*)/mysite(/*)$ http://192.168.0.1:8080/$2 [P]
Стала нормально отображаться стартовая страница внутреннего сайта (логин/пароль)
Но после его ввода сайт переходит на tp://my.host.ru/login.html и ошибка.
A это от прокси не зависит. Сервер посылает клиенту ссылку в контенте и прокся этого поменять не может.
Если там ссылка идет как /login.html, то клиент и пытается перейти на /login.html на текущем сайте.
Хорошо еще, что ссылка не идет в виде http://192.168.0.1:8080/login.html потому как тогда оно-бы вообще в ебеня уходило.

Надо править сами странички на сервере и менять ссылки на относительные. Без этого никуда.
Что Вы имеете ввиду под сервером ?
Внутренний сайт, или apache который в инет смотрит ? (Внутренний сайт это виндузятная софтина которую изменить нельзя ...)
На сколько я понимаю теорию мне нужно.
1. Преобразовывать ссылку, от обратного прокси apache к внутреннем серверу.
2. Проксировать запрос на другой порт внутреннего сетвера. RewriteRule .... [P]

Это правило:

Код: Выделить всё

RewriteRule ^(.*)/mysite(/*)$ http://192.168.0.1:8080/$2 [P]
по сути повторяет это

Код: Выделить всё

ProxyPass /mysite/ http://192.168.0.1:8080/

Re: Помогите с Apache RewriteRule

Добавлено: 2012-05-04 10:52:37
dmtr
а так

Код: Выделить всё

ProxyPass /mysite/ http://192.168.0.1:8080/
ProxyPassReverse /mysite/ http://192.168.0.1:8080/
и покажите какие еще директвы mod_proxy в конфигурации используете?

Re: Помогите с Apache RewriteRule

Добавлено: 2012-05-04 12:49:58
kharkov_max
dmtr писал(а):а так

Код: Выделить всё

ProxyPass /mysite/ http://192.168.0.1:8080/
ProxyPassReverse /mysite/ http://192.168.0.1:8080/
и покажите какие еще директвы mod_proxy в конфигурации используете?
А при чем тут ProxyPassReverse?
Но так тоже не работает.

Re: Помогите с Apache RewriteRule

Добавлено: 2012-05-10 11:05:37
kharkov_max
Upp

Re: Помогите с Apache RewriteRule

Добавлено: 2012-05-28 20:48:05
QweЯty
присоединяюсь.
на 192,168,1,56 стоит сервер апач.
а на 192,168,1,207 192,168,1,17 находятся cms программ.
хотелось бы пробросить их на 192,168,1,56 как www.site/site_ip1 www.site/site_ip2

Re: Помогите с Apache RewriteRule

Добавлено: 2012-08-26 19:01:12
zg
kharkov_max писал(а):Но после его ввода сайт переходит на tp://my.host.ru/login.html и ошибка.
а редирект кто генерит? пхп? тогда надо смотреть, как он его генерит :smile: