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

Что нужно настроить в конфигурации прокси AJP?

У меня есть HTTPD-сервер Apache в нашем продукте, и мне нужно добавить прокси AJP в какое-то конкретное приложение.

Порт Tomcat AJP - 8009, а порт HTTP Tomcat - 8080 (завершение SSL в Apache). Это прокси AJP, который мне нужно настроить.

<Directory /app>
    AuthType None
    Allow from all
    Satisfy any
    AllowOverride None
    Options None FollowSymLinks
</Directory>

<Proxy http://localhost:8080/app >
    AuthType None
    Allow from all
    Order Deny,Allow
    Satisfy any
    Options None FollowSymLinks
</Proxy>
ProxyPass /app ajp://localhost:8009/app
<Location /app>
        ProxyPassReverse ajp://localhost:8009/app
</Location>

Вопрос: Что нужно настроить в <Proxy … >? <Proxy http://localhost:8080/app > или <Proxy ajp://localhost:8009/app >

Добавлено Разъяснение. Вся конфигурация содержит корневую конфигурацию (см. Ниже).

Мне просто нужно добавить прокси AJP в какое-то конкретное приложение.

<Directory />
    Deny from all
    Allow from localhost
    Order Deny,Allow
    AuthType Basic
    Require valid-user
    AllowOverride None
    Satisfy any
    Options None FollowSymLinks
</Directory>


<Proxy *>
    Deny from all
    Order Deny,Allow
    AuthType Basic
    Require valid-user
    Satisfy any
    Options None FollowSymLinks
</Proxy>

Хорошо, у вас есть несколько неправильных представлений о конфигурации Apache, которые необходимо исправить.

  1. <Directory> блоки относятся к абсолютным путям файловой системы. Не пути URI или пути относительно корня документа. При проксировании, как упоминал Дэвид Хатчинсон, вы должны использовать <Location> блоки вместо этого.
  2. <Proxy> блоки используются (почти) исключительно для настройки прокси-серверов, не обратные. Уберите эти блоки, они вам не нужны. Опять же, используйте <Location> блоки.
  3. Не используй ProxyPass или ProxyPassReverse внутри <Location>. Хотя это действительно так, это может усложнить ситуацию. Просто используйте две версии аргументов этой директивы. Кроме того, если у вас нет причин не делать этого, используйте завершающие слэши в обеих этих директивах.

Возможно, потребуется изменить порядок блоков местоположения (я не могу припомнить правильный порядок), но начните с чего-то вроде:

ProxyPass /app/ ajp://localhost:8009/app/
ProxyPassReverse /app ajp://localhost:8009/app/

<Location />
  Order Allow,Deny
  Allow from localhost
  AuthType Basic
  Require valid-user
</Location>

<Location /app/>
  Allow from all
</Directory>

У меня есть директивы remove там, где они были по умолчанию.

Вам вообще не нужен блок «<Proxy», чтобы делать то, что вы пытаетесь достичь.

Все, что вам нужно, - это директивы ProxyPass и ProxyPassReverse. Однако для удобства чтения я бы посоветовал либо придерживаться обоих в блоке Location, либо ни одного.

Если вам нужно настроить другие параметры для пути к вашему приложению, например, аутентификацию сертификата клиента, используйте блок Location (или LocationMatch), как вы уже сделали в своей конфигурации.

Вы можете просто использовать <Proxy *>. Думаю, с этим будет хорошо.