Прокси-сервер Apache to tomcat не работает

#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