У меня есть 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>
Вопрос:
Что нужно настроить в <Прокси…>
?
<Прокси-сервер http: // localhost: 8080 / app>
или
<Прокси-сервер 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>
OK, у вас есть несколько неправильных представлений о конфигурации Apache, которые требуют исправления.
<Каталог>
блоки относятся к абсолютным путям файловой системы. Не URI-пути и не пути относительно корня документа. При проксировании, как упоминал Дэвид Хатчинсон, вы должны использовать вместо него блоки
.
блоки (почти) используются исключительно для настройки прямых прокси, а не обратных. Удалите эти блоки, они вам не нужны. Опять же, используйте
блоки.ProxyPass
или ProxyPassReverse
внутри
. Несмотря на то, что это действительно так, это может все усложнить. Просто используйте две версии этих директив с аргументами. Также, если у вас нет причин не использовать трейлинговые слэши в обеих этих директивах.Порядок расположения блоков может потребоваться изменить (я не могу вспомнить с верхней части головы правильный порядок), но начните с чего-то вроде:
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>
Я удалил директивы там, где они были по умолчанию.
.Блок "<Прокси" вообще не нужен, чтобы делать то, что вы пытаетесь достичь.
Директивы ProxyPass и ProxyPassReverse - это все, что вам нужно. Однако для удобочитаемости я бы посоветовал либо вставить оба в блок Location, либо ни то, ни другое.
Если вам нужно настроить различные параметры для пути к вашему приложению, например, аутентификацию клиентского сертификата, используйте блок Location (или LocationMatch), как вы уже настроили.