как установить корень контекста веб-приложения Java при работе с обратным прокси

  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, а также нормально работать с обратным прокси-сервером?

большое спасибо


person hetaoblog    schedule 03.01.2012    source источник


Ответы (1)


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

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

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

person Andrea Colleoni    schedule 03.01.2012
comment
привет, спасибо за ответ; вопросы: 1. как вы указываете свои ссылки на css и домашнюю ссылку? 2. как указать настройку обратного прокси в конфигурации apache? Спасибо. - person hetaoblog; 04.01.2012
comment
Обычно я добавляю класс Helper со статическим методом, который возвращает мне параметр конфигурации, который я помещаю в файл .properties, поэтому ссылка на ваш css может быть: ‹% = UrlHelper.getBasePath ()%› / css / styles. css, а в методе getBasePath вы можете читать свойства, среду, базу данных и т. д. - person Andrea Colleoni; 04.01.2012
comment
вы устанавливаете это в конфигурации обратного прокси? ProxyPass / localhost: 800 / mywebapp, - person hetaoblog; 05.01.2012