#apache #tomcat #mod-proxy
#apache #tomcat #мод-прокси
Вопрос:
У меня есть apache 2.4 и 1 сервер tomcat (порт разъема — 8081 и AJP — 8009) (оба в одном и том же linux-блоке), на котором у меня есть папка приложения с именем «MyApp» в каталоге webapps.
Прямой URL-адрес Tomcat — http://localhost:8081/MyApp/MyApp -> Эти ссылки нормально загружаются и отображают изображения, jquery и js работают нормально.
Я проксирую все запросы к tomcat из apache, используя mod_proxy, как указано ниже —
Прокси-сервер / MyApp ajp:// localhost: 8009/MyApp/MyApp
ProxyPassReverse /MyApp ajp://localhost:8009/MyApp/MyApp
Теперь, когда я пытаюсь получить к нему доступ через URL веб-сервера, URL загружается, но изображения, css, jquery, которые находятся внутри каталога /u01/tomcat/webapps/MyApp, не работают.
Если я попытаюсь загрузить прямой URL-адрес изображения, например — http://localhost/MyApp/images/logo.jpg это не работает,
В теле изображения я вижу —
HTTP Статус 404 — /MyApp/MyApp/images/incidentReport.jpg Смотрите строку выше, она добавляет еще одно «MyApp» для извлечения изображения
С другой стороны, URL-адрес tomcat [ localhost:8081/MyApp/images/logo.jpg ], загружается нормально.
В чем может быть проблема? Разработчик приложения разработал его таким образом, что оно должно работать с двойным «MyApp», то есть localhost: 8081 / MyApp / MyApp
Что еще мне нужно сделать на веб-сервере / tomcat, чтобы заставить это работать?
Ответ №1:
Вам необходимо выполнить следующие действия:
Шаг 1. Перед настройкой Apache вы должны включить необходимые модули.
a2enmod proxy
a2enmod proxy_http
Шаг 2: Далее вы собираетесь изменить файл конфигурации по умолчанию 000-default.conf
внутри /etc/apache2/sites-enabled
, чтобы настроить функциональность «проксирования».
<VirtualHost *:*>
ProxyPreserveHost On
ProxyPass / http://0.0.0.0:8081/
ProxyPassReverse / http://0.0.0.0:8081/
ServerName localhost
</VirtualHost>
Шаг 3. Затем вы собираетесь изменить server.xml досье.
<Host name="www.drew-jocham.com" appbase="webapps"
unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="resumesite_log." suffix=".txt"
pattern="common"/>
<Context path="" docBase="/MyApp/MyApp" debug="0" reloadable="true"/>
</Host>
После завершения настройки вам потребуется перезапустить облачный сервер, чтобы изменения вступили в силу. Выполните следующую команду для перезапуска Apache: service apache2 restart
И все!
Подробнее: https://medium.com/@ldclakmal/deploy-a-java-web-application-in-digitalocean-882226dcdbd5