Переадресация запросов Apache (порт 80) на Tomcat (порт 8080)?

8

Я хочу запустить приложение Tomcat через обычный URL-адрес веб-сайта, например www.xyz.com. Я бы хотел, чтобы корень этого домена действовал как базовый каталог для веб-приложения, поэтому каждый запрос www.xyz.com/a/b/cстановится www.abc.com:8080/myApp/a/b/c. В идеале я мог бы сделать это прозрачно и только для определенных веб-приложений.

www.abc.com:8080 должен еще отвечать на запросы.

Что мне нужно сделать, чтобы это произошло?

Стефан Кендалл
источник

Ответы:

14
ProxyPass        / http://www.abc.com:8080/myApp/
ProxyPassReverse / http://www.abc.com:8080/myApp/

Узнайте больше о mod_proxy

ptman
источник
это лучшее решение для этого
Майк
1
Чтобы обратиться к стороне «только для определенных веб-приложений», просто сделайте путь перенаправления более глубоким. Итак: ProxyPass / a / b / c abc.com:8080/myApp/a/b/c ProxyPassReverse / a / b / c abc.com:8080/myApp/a/b/c Чтобы проксировать все, кроме определенных путей, оставьте строку ProxyPassReverse, но замените строки ProxyPass на RewriteRules (убедитесь, что для прокси вместо перенаправления используется опция [P]), и сделайте более ранние правила, чтобы не проксировать эти пути. RewriteRule / notproxied - [L] RewriteRule /(.*) abc.com:8080/myApps/$1 [P] ProxyPassReverse / abc.com:8080/myApp
Джереми М
где я могу добавить эти строки?
Мина Майкл
@MinaMichael Документация mod_proxy гласит: Контекст: конфигурация сервера, виртуальный хост, каталог
ptman
3

Более простой способ сделать это - просто добавить запись виртуального хоста в файл конфигурации Apache. Обычно находится в / etc / httpd / conf, добавьте что-то вроде этого в конце раздела Virtual Host:

<VirtualHost X.X.X.X:80>
ServerName tomcatpage.yourdomain.com
ServerAlias tomcatpage.yourdomain.com
Redirect permanent / http://tomcatpage.yourdomain.com:8080/
</VirtualHost>

Перезапустите службу Apache, и все готово.


источник
3

Вы можете использовать mod_rewrite в Apache для этого. Загрузите mod_rewrite в ваш Apache, а в vhost www.xyz.com добавьте следующее правило:

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1

Это должно сделать магию.

Больше информации о mod_rewrite здесь .

РЕДАКТИРОВАТЬ : Чтобы сохранить имя сайта в браузерах, используйте также mod_proxy, просто добавив [P] в конце RewriteRule:

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1 [P]

Это заставит Apache действовать как прокси для этого URL, а не просто переписывать URL.

Марко Рамос
источник
Это заставляет браузер фактически перенаправлять. Это работает, но я бы предпочел, чтобы сайт появился как www.xyz.comсо стороны пользователя.
Стефан Кендалл
1
используйте также mod_proxy, и в конце RewriteRule добавьте [P], например: RewriteRule ^ / (. *) abc.com:8080/myApp/$1 [P]. Я также отредактировал ответ выше, чтобы включить эту информацию.
Марко Рамос