Как использовать другое имя пути в ProxyPass, чем имя контекста Tomcat

Я использую Tomcat 5.5.9 и Apache 2.x

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

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

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

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

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

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

С Уважением,

Diptenu

5 ответов

Я верю, что вам нужны оба

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

Есть ли причина не использовать mod_jk?

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/

Где "protocol"="http" в этом случае...

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

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

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

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

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

Допустим, ваш домен - 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 берет вас.

Другие вопросы по тегам