Apache Tomcat 代理配置

尽管 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 小一些,具有更原始的负载平衡实现(从资源使用的角度来看,这有时会给它带来优势)。

其他项目,例如 Varnish 和 Pound,提供的功能可能对更具体的场景具有吸引力。Pound 专门用于实现安全性,因此优化包括优化的 HTTPS 解码功能以及负载平衡/故障转移。Varnish 严格设计用于加速/缓存 Web 内容,因此如果需要负载平衡或安全功能,则必须与其他解决方案结合使用。

与任何技术决策一样,在选择代理解决方案时,没有什么可以替代彻底的测试。了解您的需求,使用不同的解决方案组合创建一些优化配置,然后选择最适合您的站点及其流量模式的配置。

配置

确定最适合您需要的代理服务器后,您需要对其进行配置以与您的 Tomcat 实例一起使用。这是一个两部分的过程 - 配置 Tomcat 与代理服务器通信,以及配置代理服务器与 Tomcat 通信。  

在本节中,我们将介绍 Apache HTTPD、HAProxy 和 nginx 的基本配置。几乎每个用例都需要额外的配置来实现诸如集群、日志记录和安全性之类的东西,这些技术性和站点特定性太高,无法在轻量级讨论中有用地涵盖,但这些示例将引导您完成第一步,以获取您的代理服务器和您的 Tomcat 相互交谈。

配置 Tomcat 以使用代理

可以将 Tomcat 上下文配置为使用连接器元素来预期代理请求,并配置适当的代理特定属性:

<连接器端口="8082"...

  proxyName="www.yourname.com"

  proxyPort="80">

这些属性的值应与您在代理服务器中配置的值相匹配。

通过创建仅配置代理连接器的新服务,还可以将整套 Web 应用程序配置为只能通过代理访问。

有关配置 Tomcat 以使用代理服务器的更多详细信息,请访问 官方文档

配置 Apache HTTPD

Apache HTTPD 可以借助为此目的设计的许多模块连接到 Tomcat。尽管实际上有 6 或 7 个模块可供选择,但其中许多已被弃用、不受支持或通常不稳定。实际上,您应该使用的模块只有三个:mod_jk、mod_proxy_http 或 mod_proxy_ajp。  

这些模块中的每一个都具有略微不同的功能,但性能非常相似,以至于在它们之间做出决定的程度与您是否已经在使用其中一个和其他任何模块一样重要。一个主要区别是协议 - mod_proxy_http 使用支持 HTTPS 的 HTTP 协议,而 mod_jk 和 mod_proxy_ajp 使用 AJP 协议,这是一种不支持本机加密的 HTTP 二进制形式。但是,使用 SSH 隧道或类似的东西可以很容易地实现这一点。

有关这些模块之间差异的信息以及简单的分步配置说明,您可以访问 mod_jk 连接器配置 文章,它是 MuleSoft 的 Apache Tomcat 资源中心的一部分。

mod_proxy_http 和 mod_proxy_ajp 的配置是使用标准 HTTPD 指令格式完成的。下面,您可以找到此格式的官方 HTTPD 文档的链接,以及每个模块的指令:

配置 HAProxy

HAProxy 是通过命令行命令和一个包含两个部分的单个配置文件进行配置的——“global”,其中包含所有实例的全局设置,以及“proxies”部分,用于为所有类型的服务器配置 HAProxy 的功能。与交流。

HAProxy 项目站点提供了详尽的文档,包括:

配置 NGiNX

官方 NGiNX wiki 包含 NGiNX 的完整文档,包括:

将 NGiNX 与 Tomcat 一起使用时,必须使用适合您服务器操作系统的 Tomcat Native Connectors 包。如果不这样做,将对性能产生重大影响。  

如果您不熟悉 Tomcat Native 连接器,请查看 官方文档,其中提供了完整的安装和配置说明。

延伸阅读

如果您想了解有关集群和负载平衡 Tomcat 的更多信息,您可以查看 MuleSoft 的 Apache Tomcat 资源中心中有关该主题的文章,包括集群介绍,以及使用两个 Tomcat 实例和 Apache HTTPD 的示例集群配置。

有关如何使用代理服务器保护 Web 应用程序的详细信息,请查看我们关于 Tomcat Web App Security 和 Tomcat Security Best Practices 的文章。

猜你喜欢

转载自blog.csdn.net/allway2/article/details/126261584
今日推荐