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

Как перенаправить порт 80 (Apache) на порт 8080 (Tomcat) с помощью mod_proxy

Я понимаю, что для перенаправления с порта 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.