Apache & Tomcat: ProxyPass и ProxyPassReverse
У меня возникли проблемы с настройкой Apache и Tomcat, это сценарий:
У меня есть веб-сервер Apache, работающий и работающий нормально, я могу получить доступ к этому, просто набрав:
http://localhost
Кроме того, на этом хосте у меня работает Tomcat и работает нормально; Я создал мини-веб-приложение, файлы которого находятся в каталоге "prueba", я могу получить доступ к типу:
http://localhost:8080/prueba
(Я знаю, что Apache работает в 80-порте и Tomcat в 8080 году)
Что я хочу сделать, так это то, что через Apache пользователь может получить доступ к "pruebas" (работает на Tomcat), я имею в виду:
http://localhost/prueba
Я читал много этого, и я думаю, что есть два способа сделать это, и я решил включить прокси-модули (proxy и proxy_ajp, с a2enmod), также я прочитал, что должен отредактировать этот файл: sites-available/default, это содержимое:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName 127.0.0.1
DocumentRoot /var/www
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /static/ !
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
.
.
.
Alias /static/ "/apache/www/"
</VirtualHost>
Но это не сработало: (
Я должен сказать, что я пробовал много изменений, на этих двух строках, например:
ProxyPass /prueba ajp://localhost:8009/prueba
ProxyPassReverse /prueba ajp://localhost:8009/prueba
или
ProxyPass / ajp://localhost:8009/prueba
ProxyPassReverse / ajp://localhost:8009/prueba
(каждый раз, когда я редактирую файл, я перезапускаю apache)
Но когда я получаю доступ к [http://localhost/prueba/], у меня есть: Сервис временно недоступен
Кто-нибудь знает, почему?
Спасибо заранее, ребята.
Pd: Я работаю с apache 2.2.17 и tomcat6.
Ответы
Ответ 1
Вы должны поставить
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
на вашем виртуальном хосте apache
Затем вам нужно раскомментировать прослушиватель ajp в tomcat
<Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
Затем вам нужно настроить хост и контекстный путь в server.xml
REFF:
http://www.ntu.edu.sg/home/ehchua/programming/howto/ApachePlusTomcat_HowTo.html
Надеюсь, это поможет вам.
Ответ 2
ProxyPassReverse
определяет URL-адрес Apache httpd, который должен переписывать URL-адреса, чтобы перенаправить на проксированный (скрытый) URL-адрес. Из-за этого вы должны изменить строку ProxyPassReverse
на следующее:
ProxyPassReverse / http://localhost/prueba
Смотрите также: http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html#usage
Ответ 3
Сервис недоступен из-за SELinux, попробуйте отключить SE Linux: setenforce 0
Ответ 4
Попробуйте следующее:
ProxyPass /prueba/ http://localhost:8009/prueba/
ProxyPassReverse /prueba/ http://localhost:8009/prueba/
а затем удалите следующий URL-адрес из браузера: http://localhost/prueba/
Примечание: обязательно добавить "/prueba/"
Ответ 5
вы можете попробовать добавить:
ProxyPreserveHost On
Из документации:
"Если этот параметр включен, этот параметр передает строку Host: от входящего запроса на прокси-сервер вместо имени хоста, указанного в строке ProxyPass.
Эта опция обычно отключается. Он в основном полезен в специальных конфигурациях, таких как виртуальный хостинг с прокси-сервером, основанный на имени, где исходный заголовок узла должен оцениваться сервером бэкэнда.
Ответ 6
Вы заявили: я могу получить доступ к типу:
http://localhost: 8080/prueba
но следующее не работает:
ProxyPass/prueba/http://localhost: 8009/prueba/
8080!= 8009
убедитесь, что ваши номера портов одинаковы