Apache 2.4 与 tomcat 5.5 的 virtualHost 配置

Apache 2.4 与 tomcat 5.5 的 virtualHost 配置

我目前已将 Apache 2.4 与两个 tomcat 服务器集成在一个负载平衡配置中。

Web 服务器将接受来自 DNS 的两个域名的请求,http://domain1.nlhttp://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/

相关内容