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

Как настроить mod_proxy_ajp для предоставления разных разрешений разным приложениям на одном виртуальном хосте?

На моем сервере у меня есть два приложения tomcat: 'скрытый' и 'открыто'. В скрытый приложение должно быть доступно только в локальной сети 192.168.0.0. В открыто приложение должно быть доступно для всех сетей.

Приложения работают на Tomcat 7.0.6, и запросы передаются из Apache 2.2.17 с помощью mod_proxy_ajp. Все это работает на сервере FreeBSD 8.2.

Веб-сервер Apache также обрабатывает корневой веб-сайт, который является статическим. Виртуальный хост не настроен (только один хост).

Я пока не нашел какой-либо примерной конфигурации, поэтому просто попытался объединить две простые конфигурации:

ProxyRequests Off
ProxyPreserveHost On

<Proxy /hidden>
  Order Deny,Allow
  Deny from all
  Allow from 192.168
</Proxy>

<Proxy /open>
  Order Deny,Allow
  Allow from all
</Proxy>

ProxyPass /hidden ajp://localhost:8009/hidden/
ProxyPassReverse /hidden ajp://localhost:8009/hidden/

ProxyPass /open ajp://localhost:8009/open/
ProxyPassReverse /open ajp://localhost:8009/open/

В этой конфигурации оба приложения доступны из всех сетей. Я уже играл с настройками Allow / Deny. Этот показался мне наиболее логичным.

Кто-нибудь знает, что не так с моей конфигурацией?

Оли

В <Proxy> Директива принимает полный URL-адрес - поскольку у вашего виртуального хоста может быть несколько из них, директива больше подходит, когда вы используете ее в качестве полного прокси.

Попробуйте изменить свои директивы на <Location> блоки, которые должны применять разрешения так, как вы хотите:

<Location /hidden>
  Order Deny,Allow
  Deny from all
  Allow from 192.168
</Proxy>

<Location /open>
  Order Deny,Allow
  Allow from all
</Proxy>