如何在同一个 URL 上配置 apache 和 tomcat?

如何在同一个 URL 上配置 apache 和 tomcat?

假设我有一个注册的 URL,mywebsite.com它指向一个具有公共 IP 地址的服务器。

我想要运行 tomcat 和 apache 来提供页面服务(即,apache 上的一些静态页面和 tomcat 上的一些动态页面,如 jsp 等...)。

为了简单起见,我们假设 apache 在 80 上监听,而 tomcat 在 8080 上监听。

我听说过mod_proxy。是否可以将请求发送mywebsite.com到 apachemywebsite/loggedin并发送到 tomcat?如果可以,应该如何配置以及在哪里配置?谢谢。

答案1

我建议使用mod_jk--它比 更具体mod_proxy,也更容易调试。您可以转发上下文。例如,如果我有webapp1webapp2在 Tomcat 上运行,并且我images在 Apache 上有一个目录,那么这将起作用:

<VirtualHost *:80>
    ...
    JKMount /webapp1/* ajp13
    JKMount /webapp2/* ajp13
    Alias /images "/some/local/dir"
</VirtualHost>

配置起来也容易得多,而且大多数发行版的原生包管理器中已经有包了。希望这对你有帮助!

答案2

mod_proxy 与 tomcat 配合良好。有两种方法可以通过 mod_proxy 代理 tomcat。

  1. http - 因此 tomcat 作为 http 服务器运行,并且 apache 通过 HTTP 与 tomcat 通信
  2. mod_proxy_ajp - 使用 ajp 协议(mod_jk 也使用)。在这种情况下,apache 通过二进制协议与 tomcat 通信,这种协议具有更好的性能。

mod_proxy_ajp 是 apache 附带的一个包,而 mod_jk 需要下载并编译。但是 mod_jk 通常先获得新功能并具有更多选项。如果您的设置并不复杂...mod_proxy_ajp 是最佳选择。在这种情况下,在 Tomcat 中,您需要配置 tomcat 以拥有 AJP 连接器。并且您不需要在 server.xml 中使用 http 连接器。对于 apache,该指令可能非常简单:

  ProxyPass /loggedin ajp://127.0.0.2:8009/loggedin 

带有 ajp 示例的代理文档在这里:http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

相关内容