Apache从1.2版本起,代理模块就已经加入到Apache源代码中,可惜当时的代理模块有很多问题,比如:与较新的http规范不兼容等等,从Apache2.0起mod_proxy模块不但被重新改写,还分割成4部分模块:mod_proxy、mod_proxy_http、mod_proxy_ftp、mod_proxy_connect,并且能够使用http规范较新的特征,这意味着速度更快,而从Apache2.2版本以后更进一步加入mod_proxy_ajp、mod_proxy_balancer这两个模块。而最新的Apache版本httpd2.4.33(2018-03-18更新的)支持如下代理模块:
mod_proxy、mod_proxy_connect、mod_proxy_ftp、mod_proxy_http
mod_proxy_ajp、mod_proxy_balancer
mod_proxy_express、mod_proxy_fcgi、mod_proxy_fdpass、mod_proxy_hcheck、mod_proxy_scgi、mod_proxy_uwsgi、mod_proxy_wstunnel
其他辅助模块功能介绍:
mod_proxy_http:提供代理http请求的功能,它支持http/0.9、http/1.0、http1.1标准协议。
mod_proxy_ftp:提供对ftp功能的支持,但是这种支持仅限于get方式,即只能取回ftp站点上文件,却无法上传文件。
mod_proxy_connect:提供对http connect方法的支持,这种支持主要应用于处理通过代理服务器的ssl连接请求。
mod_proxy_ajp:提供Apache JServ Protocol Version1.3的支持。
mod_proxy_balancer:为Apache提供负载均衡支持,它支持http、ftp、ajp13协议的负载均衡支持。
正向代理:
正向代理服务器如下图所示,它的原理:代理服务器通常是直接或者间接地连接到客户端和目标网络(他们之间可能会有防火墙或者是路由器,但是必须保证代理服务器的数据到客户端或者目标网络,否则无法代理完成)它将转发客户端的请求数据到服务器,服务器响应后发送客户端数据到代理服务器,再由代理服务器转发给客户端。
反向代理和正向代理正好相反,反向代理如下图所示,客户端并不需要进行任何特别的设置就可以直接访问目的网络,反向代最常见的方式就是将防火墙后面的服务器提供给外网用户访问,这点有点像网关服务的端口映射功能,将客户端请求转发到相应的主机端口上,只不过反向代理服务器还可以提供更多的功能,例如:负载均衡、缓冲服务、URL策略等。另外这种反向代理服务器还能保护服务器的安全,使内部的数据在传输时能得到控制。