apache 反向代理_通过 Apache 与 Nginx 配置 AJP 配置反向代理

↑ 点击上面 “时代Java”关注我们,

关注新技术,学习新知识!

前言

目前,随着公有云的出现,一些大型的服务提供商将很多的基础服务以公有云的形式发布出来,而企业则可以使用这些基础服务,构建其自身特点的业务功能,并将这些功能以服务的形式发布在互联网之上。无论是使用公有云还是私有云服务,这些对外暴露的服务都会面临服务的高性能、与高可用问题。

如何提高服务的高性能?除了增加硬件投入,在软件方面可以优化的地方其实也很多,比如使用高效的通讯协议,就是一种事半功倍的方法。这里我们着重介绍代理服务器中经常使用的 AJP 协议。

学习 AJP 协议以及其配置过程,不仅能够使我们更加清楚的了解服务器的执行过程,动静分离的重要性,也更清楚的认识到反向代理在业务中的作用。保证线上服务器的高性能、高可用,已经逐渐成为每个开发者所必须掌握的技能,这也是反向代理所关注和解决的重点。而本文其实是关注于服务器的高性能问题,使用 AJP 协议来快速提高线上服务器的访问性能,缩短请求时间。

正向代理和反向代理

正向代理是位于客户端和原始服务器(origin server) 之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。正向代理的典型用途是为在防火墙内的局域网客户端提供访问 Internet 的途径。

反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的发送请求,反向代理将判断向何处 (原始服务器) 转交请求,并将获得的内容返回给客户端。反向代理的典型用途是将防火墙后面的服务器提供给 Internet 用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。

本文关注的重点是反向代理,以及如何使用 AJP(Apache JServ Protocol)来配置此服务。

43fc2d394c968c07e2a483411e8e571f.png

反向代理与 AJP 协议

AJP 是 Apache 提供的完成与其它服务器通讯的一种二进制协议。在 Apache 中通过 mod_proxy_ajp 模块发送 AJP 数据,另一端服务器需要实现 AJP 协议,并能够接受 mod_proxy_ajp 模块发送的 AJP 协议数据,在完成对 AJP 协议数据的处理后,将处理结果以 AJP 协议约定的方式返回给 mod_proxy_ajp 模块。

AJP 的连接方式比 HTTP 具备更好的性能,同时它具有 HTTP 相同的功能。由于 AJP 协议使用二进制传输方式,因此它比 HTTP 的文本传输方式更有效率。Apache 使用 mod_proxy 或者 mod_proxy_ajp 来支持 AJP,而对应的后台服务器例如 Tomcat 则需要开启 AJP 服务。

使用 AJP 的优点可以总结如下:

  1. AJP 与 Tomcat 之间的通讯属于长链接,能够减少频繁请求带来的消耗。

  2. AJP 协议比 HTTP 协议用到的报文更小,请求和应答效率因此会更高。

  3. AJP 协议将解析的过程放在 HTTP 服务器中进行。对于 parameter、attribute 还有 http     头,以及一些其他的内容解析都由 Apache 或 Nginx 这样的 HTTP 服务器完成的。使用 C     语言处理报文的解析,效率的提升也是很明显的。

另外,关于 AJP 协议的版本,有必要在这里说明一下,目前支持的协议有 ajp12,ajp13,以及 ajp14。ajp12 协议目前由于版本太老,已经不再被使用,而 ajp14 还属于实验阶段,因此目前被广泛接受和支持的协议是 ajp13,很多时候我们也将 ajp13 协议称之为 AJP1.3 或者 AJP13。

关于 AJP 协议的详细介绍,可以参考这里:http://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html。

通过 Apache 配置反向代理

在众多的代理服务器中,最具有代表性的就是 Apache、和 Nginx,它们都是目前使用度最高的代理服务器。关于使用 HTTP 协议来配置代理服务,网上有很多的文章可以参考。但由于我们关注的是服务器的高性能问题,因此如何使 Apache、Nginx 代理服务器支持 AJP 协议,以及如何正确的配置 AJP 模块,才是我们接下来要重点介绍的。

首先,我们来看通过 Apache 配置反向代理服务,这里我们可以使用 mod_jk 模块或 mod_proxy_ajp 模块来进行配置。

Apache 配置 mod_jk

mod_jk 作为 Apache 中 AJP 协议的实现,完成 Apache 与 Tomcat 之间的通讯。Tomcat 默认会监听 AJP 连接器的 8009 端口,来接受 AJP 的连接请求,一般来说这些请求都来自前端的 HTTP 服务器(例如 Apache)。

下面我们以 Ubuntu 14.04 作为测试机器,来安装和配置 mod_jk。一般来说,在 Ubuntu 上安装软件可以采用 apt 或者源代码编译的方式,这里我们使用简单的 apt 方式来安装和配置 Apache。

↓↓↓具体配置方式点击下面查看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值