Как установить корневой контекст Java-приложения при работе с обратным прокси - PullRequest
1 голос
/ 03 января 2012
  1. Мой старый способ использования mod_jk в apache и настройки виртуального хоста в tomcat. В файле JSP я ссылаюсь на CSS, как показано ниже

    / <%=request.getContextPath()%>/css/styles.css

, в то время как домашняя ссылка установлена ​​на

/<%=request.getContextPath()%>/

, поэтому это работало нормально, когда я использую mod_jk в apache для работы с Tomcat, используя ajp;

  1. Когда я пытаюсьнастроить обратный прокси-сервер, как показано ниже

ProxyPass / http://localhost:800/mywebapp

ProxyPassReverse / http://localhost:800/mywebapp

домашняя страница может быть получена в порядке, но запрос css становится http://mydomain.com/mywebapp/mywebapp/css/style.css поэтому файл css не может быть получен правильно;

  1. Я думаю, что один из возможных способов - всегда использовать относительный путь, например ./style.css или ../style.css a.поскольку верхний и нижний колонтитулы являются общими, а домашняя страница находится на другом уровне со страницей сведений, неудобно использовать относительный путь, поскольку они находятся на другом уровне b.Тем не менее, я думаю, что домашняя ссылка должна быть /<%=request.getContextPath()%>/

, поэтому мне интересно, как можно настроить contextroot в java web, а также нормально работать собратный прокси?

thx много

1 Ответ

0 голосов
/ 03 января 2012

Как я знаю, ваш сервер приложений (Tomcat) не может знать о наличии обратного прокси. Вообще говоря, с ним можно связаться через любое количество обратных прокси или напрямую через браузеры. Для ограничения этого обычно используется конфигурация сети, а не HTTP или Java.

Таким образом, вы должны точно полагаться на относительные URL, чтобы ваше приложение работало хорошо.

Когда мне приходится иметь дело с наличием обратного прокси-сервера (почти всегда из-за архитектуры SSO), я встраиваю элемент строки конфигурации "junction" (часть URL-адреса, используемого в прокси-сервере для сопоставления приложения) и использую его только те места, где мне нужно создать абсолютный URL.

...