Я понимаю, что для перенаправления с порта 80 на порт 8080 я могу использовать модуль Apache mod_proxy,
Я понимаю, что мне нужно "что-то" поменять, чтобы быть таким (пример из http://httpd.apache.org/docs/2.2/mod/mod_proxy.html):
ProxyPass /foo http://foo.example.com/bar
ProxyPassReverse /foo http://foo.example.com/bar
Я не понимаю, как мне «редактировать mod_proxy». Я нашел файл под названием mod_proxy.so
но это не текстовый файл, который можно редактировать.
Что мне нужно сделать, чтобы внести эти изменения, это текстовый файл, который мне нужно отредактировать, или какие-то команды, которые мне нужно выполнить?
РЕДАКТИРОВАТЬ:
На основании этого вопроса Как использовать mod_proxy, чтобы мой индекс Apache переходил в Tomcat ROOT и мог просматривать другие мои сайты Apache
Я отредактировал httpd.conf, чтобы он выглядел так:
LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#Enabling proxy for redirection to tomcat
#ProxyRequests Off
#ProxyPreserverHost On
<Proxy *>
Order deny, allow
Allow from all
</Proxy>
#ProxyPass / ajp://localhost:8009/
#ProxyPassReverse / ajp://localhost:8009/
<Location http://www.mywebserver.com>
Order allow,deny
Allow from all
PassProxy / http://localhost:8080/
PassReverseProxy / http://localhost:8080
</Location>
Затем я попытался перезапустить apache с помощью apachectl -k graceful
но я получил:
Syntax error on line 207 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/httpd.conf: Cannot load /etc/apache2/modules/mod_proxy.so into server: /etc/apache2/modules/mod_proxy.so: cannot open shared object file: No such file or directory
Action '-k graceful' failed.
Любая информация о том, что я делаю неправильно или что я могу прочитать, чтобы получить дополнительную информацию, была бы очень признательна.
Обычно я сначала включаю mod_proxy
и mod_proxy_ajp
. В зависимости от вашего дистрибутива вы a2enmod mod_proxy_ajp
и это позволяет им обоим, поскольку ajp зависит от mod_proxy
.
Затем я добавляю что-то вроде этого:
<IfModule mod_proxy_ajp.c>
<Location /tomcat-context>
ProxyPass ajp://IP-or-FQDN/tomcat-context
ProxyReversePass ajp://IP-or-FQDN/tomcat-context
</Location>
</IfModule>
Эта часть находится внутри моего <VirtualHost>
. Остальное - это базовая конфигурация, установленная ОС (как показано в вашей конфигурации, с ProxyRequests Off
и т.д.)
ОБНОВИТЬ: Что вам нужно изменить или хотя бы проверить, так это ваш tomcat server.xml. У него должен быть включен ajp-контейнер следующим образом:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Вы можете отключить соединитель на 8080, если это все, что вы обслуживаете из tomcat, и если вам не нужен бэкэнд. Если у вас нет доступа к этому или порты для ajp отключены, вы можете в основном добиться того же вирта 8080
. Просто замените тег ajp: // в предоставленной конфигурации на http: // и добавьте: 8080 после IP-или-FQDN.
ОБНОВЛЕНИЕ 2 Служить /
просто пиши
<IfModule mod_proxy_ajp.c>
<Location />
ProxyPass ajp://IP-or-FQDN/tomcat-context
ProxyReversePass ajp://IP-or-FQDN/tomcat-context
</Location>
</IfModule>
Убедитесь, что вы закомментировали DocumentRoot /path/to/old/documentroot/
директива и <Directory /path/to/old/documentroot/>
в вашей конфигурации apache.