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

Обслуживание статического содержимого с помощью веб-сервера Apache и Tomcat

Я настроил веб-сервер Apache и Tomcat следующим образом:

Я создал новый файл в apache2 / sites-available, назвал его «myDomain» со следующим содержимым:

<VirtualHost *:80>

ServerAdmin admin@myDomain.com
ServerName myDomain.com
ServerAlias www.myDomain.com

ProxyPass / ajp://localhost:8009

<Proxy *>
AllowOverride AuthConfig
Order allow,deny
Allow from all
Options -Indexes
</Proxy>

</VirtualHost>

Включены mod_proxy и myDomain

a2enmod proxy_ajp
a2ensite myDomain

Отредактировал Tomcat server.xml (внутри тега Engine)

<Host name="myDomain.com" appBase="webapps/myApp">
<Context path="" docBase="."/>
</Host>
<Host name="www.myDomain.com" appBase="webapps/myApp">
<Context path="" docBase="."/>
</Host>

Это прекрасно работает. Но я не люблю помещать статические файлы (html, изображения, видео и т. Д.) В подпапки {tomcat home} / webapps / myApp, вместо этого я хотел бы поместить их в подкаталоги корневого каталога WWW веб-сервера apache. И я бы хотел, чтобы веб-сервер Apache обслуживал только эти файлы.

Как я мог это сделать? Таким образом, весь входящий запрос будет перенаправлен на Tomcat, кроме тех, которые запрашивают статический файл.

Вы, вероятно, захотите использовать ProxyPassMatch. Вы можете использовать это как:

ProxyPassMatch ^(/.*\.cgi)$ ajp://localhost:8009$1

для проксирования всех запросов, заканчивающихся на .CGI. Если вы хотите проксировать несколько расширений, просто добавьте больше строк или отредактируйте регулярное выражение. Затем вам просто нужно убедиться, что ваш VirtualHost настроен для обслуживания оставшихся типов изображений.

Хотя ответ uesp технически верен, я всегда рекомендую людям использовать Соединитель Apache mod_jk для размещения серверов приложений Java через Apache. В общем, он упрощает, ну ... все, и позволяет монтировать определенные контексты. Например, теперь вы можете просто использовать:

LoadModule     jk_module   libexec/mod_jk.so
JKMount        /myapp/*    ajp13

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