2009-09-08 1 views
13

Я использую Tomcat 5.5.9 и Apache 2.xКак использовать другое имя пути в ProxyPass, чем имя контекста Tomcat

Мы пытаемся использовать имя пути в ProxyPass, который отличается , чем Tomcat имя контекста.

ProxyPass /path http://localhost:8080/contextname 

Однако это не работает. Когда эти два одинаковые , тогда все работает нормально.

Большинство примеров, которые я вижу в сети, также имеют путь, равный имени контекста Tomcat.

Я использую «context.xml» в контексте Tomcat и do У меня нет записей «server.xml». Кроме того, я использую простой httd.conf и НЕ используя любые записи VirtualHost.

Любая помощь приветствуется.

С уважением,

Diptenu

ответ

10

Я считаю, что вам нужно как

ProxyPass /path/ http://localhost:8080/contextname/ 
ProxyPassReverse /path/ http://localhost:8080/contextname/ 

какой-либо причине не использовать mod_jk?

+0

Hello David, У меня были команды ProxyPass и ProxyPassReverse, хотя я не упоминал об этом в своем сообщении. Что касается того, почему не использовать mod_jk, мне просто нужно скрыть порт tomcat из URL-адреса доступа пользователя, и ничто другое, поэтому mod-proxy кажется самым простым –

+1

Исправлено решение - вероятно, вы должны иметь косые черты в конце URI. Это скопировано из моих файлов conf. –

3
RewriteEngine on 
RewriteRule ^/path$ /path/ [R] 
RewriteRule ^/path/(.*) /contextname/$1 [P] 

ProxyPass /contextname/ protocol://192.168.15.48:8080/contextname/ 
ProxyPassReverse /contextname/ protocol://192.168.15.48:8080/contextname/ 

Где "протокол" = "HTTP" в этом случае ...

2

Добавить косую черту оба значения:

ProxyPass /path/ http://localhost:8080/contextname/

+0

Не могли бы вы объяснить, как это отличается от версии без обучения? –

+0

не решает проблему. –

1

вашу проблему, вероятно, самосправочные URL-адреса, которые приложение создает. Существует не так много вы можете сделать о нем, за исключением

  1. изменения приложения или
  2. переписать все, что он выплевывает.

Вариант 2 может быть очень хрупким. См. the tomcat docs для получения дополнительной информации.

+0

Это хорошо и понятно –

-2

Скажите, что ваш домен - bla.com, и вы хотите прокси-сервер bla.com/path для 8080/contextname.

При использовании приведенных ниже, то вы в конечном итоге получить редирект contextname

ProxyPass /path http://localhost:8080/contextname 
ProxyPassReverse /path http://localhost:8080/contextname 

Результат: bla.com/contextname (Перенаправление в журналах Apache)

Для того, чтобы получить желаемый результат, который вы должен содержать слэш после контекстного имени.

ProxyPass /path http://localhost:8080/contextname/ 
ProxyPassReverse /path http://localhost:8080/contextname/ 

Результат: bla.com/path

Немного поздно, но это где Google принимает вас.

+0

попробовал это, но он не работает. – Jakki

Смежные вопросы