Назад | Перейти на главную страницу

Как обеспечить одинаковый путь контекста при доступе к веб-приложению через Apache (прокси-порт - порт 80) и tomcat (порт 8080)?

Я написал веб-приложение на Java / J2EE и развертываю его с помощью apache (микро-экземпляр ec2) для пересылки запросов от порт 80 к порт 8080 (такая же машина). Мой httpd.conf выглядит так:

<VirtualHost *:80>
  ServerName localhost
  <Proxy *>
    Order deny,allow
    Allow from all
  </Proxy>
  ProxyPreserveHost On
  ProxyPass / http://localhost:8080/WEBAPP/
  ProxyPassReverse / http://localhost:8080/WEBAPP/
</VirtualHost>

Проблема в том, что когда я добавляю <%=request.getContextPath()%> перед моими ресурсами (URL-адреса, путь к изображениям, файлы js и т. д.) он добавляет то же самое, когда я получаю доступ к своему приложению с порта 80 или 8080. Теперь, когда я получаю доступ к моему приложению с порта 80, все мои ссылки перепутаны и ни один мои JS, css или URL-адреса работают.

Кроме того, я мог совершенно неправильно подойти к настройке своего веб-приложения, поэтому любой совет по его настройке будет оценен.

Спросил об этом при переполнении стека, но был указан здесь ...

https://stackoverflow.com/questions/15736198/how-do-i-ensure-the-context-path-is-the-same-when-accessing-a-web-app-via-apache

РЕДАКТИРОВАТЬ

Как упоминалось в комментарии ниже, я настраиваю доменное имя и хотел бы mydomain.com загружать mydomain.com:8080/WEBAPP когда я захожу на mydomain.com. Я не уверен, что перенаправление - правильный ответ, потому что я не хочу просто отправлять пользователя на mydomain.com/WEBAPP (что легко исправить) Я хочу, чтобы URL-адрес выглядел красиво и работал интуитивно, а не просто перенаправлял пользователя повсюду. Также я пытаюсь избегать использования относительных путей при доступе к моим ресурсам (imgs, css, js и т. Д.), Чтобы я мог перенаправлять / перенаправлять пользователей из сервлета или напрямую обращаться к jsp, а пути должны быть правильными независимо от того, что фактически отображается в URL-адресе.

Надеюсь, это лучшее объяснение. Еще раз извините, если я не понял выше.

Вам следует исправить свою конфигурацию:

<VirtualHost *:80>
  ServerName localhost
  <Proxy *>
    Order deny,allow
    Allow from all
  </Proxy>
  ProxyPreserveHost On
  ProxyPass /WEBAPP http://localhost:8080/WEBAPP/
  ProxyPassReverse /WEBAPP http://localhost:8080/WEBAPP/
</VirtualHost>

Дополнительная опция

<VirtualHost *:80>
  ServerName localhost
  <Proxy *>
    Order deny,allow
    Allow from all
  </Proxy>
  ProxyPreserveHost On
  ProxyPass / http://localhost:8080/
  ProxyPassReverse / http://localhost:8080/
</VirtualHost>

Уточнение: с точки зрения безопасности лучше добавить перенаправление для каждого приложения (первый вариант). В этом случае все неподходящие запросы будут остановлены на Apache и не достигнут Tomcat.