Как использовать другое имя пути в 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

Ответы

Ответ 1

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

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

Любая причина не использовать mod_jk?

Ответ 2

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" в этом случае...

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

Скажите, что ваш домен - bla.com, и вы хотите прокси bla.com/path для 8080/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.