假设我有一个注册的 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
,也更容易调试。您可以转发上下文。例如,如果我有webapp1
并webapp2
在 Tomcat 上运行,并且我images
在 Apache 上有一个目录,那么这将起作用:
<VirtualHost *:80>
...
JKMount /webapp1/* ajp13
JKMount /webapp2/* ajp13
Alias /images "/some/local/dir"
</VirtualHost>
配置起来也容易得多,而且大多数发行版的原生包管理器中已经有包了。希望这对你有帮助!
答案2
mod_proxy 与 tomcat 配合良好。有两种方法可以通过 mod_proxy 代理 tomcat。
- http - 因此 tomcat 作为 http 服务器运行,并且 apache 通过 HTTP 与 tomcat 通信
- 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