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

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

前言

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

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

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

正向代理和反向代理

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

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

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

反向代理与 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。

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

apache 反向代理_通过 Apache 与 Nginx 配置 AJP 配置反向代理相关推荐

  1. 设置代理_如何防止用户更改Windows 10上的代理设置

    如何在Windows 10上禁用代理设置 在Windows 10上,可以使用组策略编辑器和注册表以至少两种不同的方式禁用通过"设置"应用程序(和" Internet选项& ...

  2. vue的proxyTable的地址代理和重定向,配合nginx的地址代理问题

    备注:vue和nginx都做了地址代理,但是vue中的重写更改了地址,导致nginx代理失效(找不到)的问题: 问题场景: 1.vue中的地址代理(有问题的写法) 目录:/config/index.j ...

  3. Nginx前端设置反向代理,后端Apache如何获取访客的真实IP,结合PHP。

    nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递 ...

  4. Nginx前端设置反向代理,后端Apache如何获取访客的真实IP,结合PHP

    nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递 ...

  5. ins与apache的区别_既然nginx比apache快,为什么nginx没有取代apache?

    Nginx比Apache轻量高效是肯定的,而且两者都很稳定. netcraft统计,2016年2月份,在排名前一百万最繁忙的站点中,Apache约46%,Nginx约25%,IIS不足12%.值得注意 ...

  6. Nginx的基本介绍反向代理

    什么是nginx Nginx 是异步框架的网页服务器,也可以用作反向代理.负载平衡器和 HTTP 缓存.大部分 Web 服务器使用 Nginx,通常作为负载均衡器. 部署web项目的容器(部署你们写的 ...

  7. Nginx安装及配置反向代理

    本片博客记录在ubuntu16下安装nginx,以及如何实现负载均衡 安装nginx 如果是新机器,安装相关依赖环境 sudo apt install build-essential sudo apt ...

  8. Nginx学习笔记(反向代理搭建集群)

    一.前言 1.1 大型互联网架构演变历程 1.1.1 淘宝技术 淘宝的核心技术(国内乃至国际的 Top,这还是2011年的数据) 拥有全国最大的分布式 Hadoop 集群(云梯,2000左右节点,24 ...

  9. 带你了解什么是Nginx(实操反向代理-负载均衡)

    文章目录 一.前言 ①什么是Nginx? ②服务中为什么要使用Nginx原因? 二.安装Nginx 1.介绍 2.安装 ①在Linux系统安装nginx ②上传并解压到/usr/local/目录下 ③ ...

最新文章

  1. Leetcode | Maximal Rectangle
  2. idea插件Easy Code的使用
  3. angular input_Angular 秒杀其它框架的设计之美(一)
  4. matlab绘制8条曲线,科学网—【Matlab】如何用plotyy对应坐标绘制多条曲线 - 叶瑞杰的博文...
  5. 微信喊你来找工作:上千家企业将提供超10万个就业岗位
  6. html 下拉列表返回值,jquery 根据后台返回值来选中下拉框 option 值
  7. echarts 雷达图_【带着canvas去流浪】绘制雷达图
  8. 网上打开与关闭gps几种方案测试,其中方案3可行
  9. 51单片机c语言开发工具keil安装
  10. 英国正在大举进军AI,看懂其三大投资走向
  11. 微机原理--8088/8086微处理器详解
  12. vue项目中引入阿里云滑动验证
  13. android 轨迹生成图,Android自定义View实现公交成轨迹图
  14. 停用计算机网络,如何禁用电脑上网功能
  15. Excel提取身份证出生日期②
  16. 暖暖环游世界显示服务器异常,暖暖环游世界
  17. 【编译和解释】【源代码和目标代码】【静态语言和脚本语言】
  18. 赴美工作常识-签证 英语 求职
  19. 如何制作一个自定义的winpe?
  20. 为什么微信语音不能转发?知道真相后才发现我们都错怪了微信!

热门文章

  1. java web开发中会遇到的异步执行方案
  2. NS2中数据包Packet的分析 (转帖)
  3. AFTER触发器与INSTEAD OF触发器的区别
  4. websocket的加密和解密过程
  5. Python之基本数据类型set常用基本方法简述
  6. 2015必须推荐的Android框架,猿必读系列!
  7. 【Hadoop】在Linux中的Hadoop部署与yarn HDFS MapReduce 的配置中常见的问题?你解决了吗?
  8. 圆盘(抽奖)自定义View
  9. Mysql数据库小结
  10. python 图像宽度_正确的方法和Python包可以找到图像的宽度