У меня есть 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, которые необходимо исправить.
<Directory>
блоки относятся к абсолютным путям файловой системы. Не пути URI или пути относительно корня документа. При проксировании, как упоминал Дэвид Хатчинсон, вы должны использовать <Location>
блоки вместо этого.<Proxy>
блоки используются (почти) исключительно для настройки прокси-серверов, не обратные. Уберите эти блоки, они вам не нужны. Опять же, используйте <Location>
блоки.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 *>
. Думаю, с этим будет хорошо.