尽管 Apache Tomcat 能够通过 Coyote HTTP/1.1 连接器组件充当独立的 HTTP 服务器,但许多管理员还在他们的 Tomcat 实例前面使用代理服务器。将代理服务器与 Tomcat 一起使用的常见原因包括安全性、负载平衡、扩展功能(例如 URL 重写)和内容缓存。
在本文中,我们将介绍您需要了解的有关将 Tomcat 与代理结合使用的所有信息 – 比较 最常与 Tomcat 一起使用的代理服务器、 示例配置。
选择代理解决方案
在为 Tomcat 服务器选择代理解决方案时有很多选择,Apache HTTPD、HAProxy 和 NGiNX 是目前最常用的全方位开源解决方案。这些项目有时会与其他项目结合使用,例如更专业的 Pound 和 Varnish。在某些情况下,这些解决方案是分层的,以利用每个解决方案的不同功能——例如,Tomcat 集群以 Apache 为前端用于负载平衡和安全,而 Varnish 用于缓存。
Apache HTTPD经过实战 考验,为大多数管理员所熟悉,与社区创建的模块齐平,可用于根据需要快速扩展 Tomcat 的功能,并通过 Tomcat 连接器项目(也称为 mod_jk )与 Tomcat 集成。提供负载平衡的 Apache HTTPD 实例后面的 Tomcat 服务器集群是一种非常常见的设置,无论是在传统基础设施中还是在云中。
HAProxy 是一种代理服务器,专门设计用于为应用服务器提供快速、弹性、高可用性的负载平衡。HAProxy 使用事件驱动的架构而不是线程,这在理论上允许它处理更多的同时连接而不会崩溃。HAProxy 通常用于为内容丰富的站点提供负载平衡,这些站点必须抵御针对少量页面的突发流量高峰。
NGiNX 是一个非常快速的 Web 和代理服务器,与 HAProxy 一样,它使用事件驱动的架构来抵御大流量峰值。通常,处理高负载场景的管理员会同时测试 nginx 和 HAProxy,因为众所周知,根据站点的性质,它们在原始吞吐量的基础上会相互超越。NGiNX 比 HAProxy 小一些,具有更原始的负载平衡实现(从资源使用的角度来看,这有时会给它带来优势)。