我目前已将 Apache 2.4 与两个 tomcat 服务器集成在一个负载平衡配置中。
Web 服务器将接受来自 DNS 的两个域名的请求,http://domain1.nl和http://domain2.nl
我希望将 http(s)://domain1.nl/ 的请求发送到 http(s)://domain1.nl/myapp1/login/login.do,并将 http(s)://domain2.nl/ 的请求发送到 http(s)://domain2.nl/myapp2/
myapp1 和 myapp2 都在两个负载平衡的 tomcat 实例上运行。
答案1
mod_rewrite
在 Apache 上启用“mod_proxy_http”。
<VirtualHost *:80>
ServerName domain1.nl
Rewriteengine on
RewriteRule ^/$ http://domain1.nl/myapp1/login/login.do
ProxyPass /myapp1 http://localhost:8080/myapp1
ProxyPassReverse /myapp1 http://localhost:8080/myapp1
</VirtualHost>
<VirtualHost *:80>
ServerName domain2.nl
Rewriteengine on
RewriteRule ^/$ http://domain2.nl/myapp2/
ProxyPass /myapp2 http://localhost:8080/myapp2
ProxyPassReverse /myapp1 http://localhost:8080/myapp2
</VirtualHost>
有复制粘贴的答案。但这可能只会导致更多问题,因为您无法通过逐字复制粘贴获得基本理解。
阅读全部Apache 虚拟主机和Apache 重写模块文档,这样你就能真正理解它是如何工作的,从而可以据此思考。
要让这些 URL 通过 Apache 到达后端 Tomcat 服务器,请按照以下说明应用代理指令Apache 代理文档。显然,上面的配置中,localhost
应该用 Tomcat 服务器所在的主机替换。
答案2
在 Apache 上启用 mod_rewrite 和 'mod_proxy_http`。
根据 apache 版本的不同,这些 mods 可能不存在(由于‘mod_’),请尝试:
a2enmod 重写
a2enmod proxy_http
服务 apache2 重启
在你的虚拟主机中,这是我用来重定向到 tomcat 的排除php admin 来自转发:
ProxyPreserveHost on
ProxyRequests off
ProxyPass /phpmyadmin !
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/