Как использовать другое имя пути в 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/
Вероятно, ваша проблема связана с самообращающимися ссылками, которые создает приложение. Вы ничего не можете с этим поделать, кроме
- изменение приложения или
- перепишите все, что он выплевывает.
Вариант 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 берет вас.