什么是反向代理,如何利用反向代理提高网站性能

时间:2024-03-28 07:08:48

1.什么是正向代理和正向代理服务器?

      正向代理就是通常所说的代理,是某台电脑通过一台服务器来上Internet网的这种方式,其中这台电脑就叫客户机,这台服务器就叫正向代理服务器也就是通常所说的代理服务器。在这种方式中,你是主动的,网站是被动的,网站那里不能得到你的真实ip地址。(通俗讲法)

 

      正向代理服务器。它只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器(一般在IE-Internet选项-连接-局域网设置),并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。

 

2.什么是反向代理和反向代理服务器?

     反向代理就是网站通过一台服务器发布到公网,供用户访问。用户直接访问那台反向代理服务器,然后通过那台服务器访问到网站。用户无法得到网站的真实IP地 址。这样就保护了网站服务器,如果您有台服务器在国内又不想让人找到IP,就可以在国外搭建一台反向代理服务器。一个反向代理服务器将很多网站解析到同一 ip地址上。(通俗讲法)

 

     技术讲法,普通的Web代理服务器是不支持外部对内部网络的访问请求的。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务 。此时的代理服务器称为反向代理服务器 , 对外表现为一个Web服务器,外部网络就可以简单把它当作一个标准的Web服务器而不需要特定的配置。不同之处在于,这个服务器没有保存任何网页的真实数 据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上。因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的 安全性。

 

       反向代理用于外部网络访问内部网络时使用,正向代理用于提供内部网络对外部网络的访问能力,并可以使用包过滤拒绝其他方式访问外部网络。

 

3.现在看一个实例。利用 squid 反向代理提高网站性能

      反向代理技术在提高网站访问速度,增强网站可用性、安全性方面有很好的用途。可以利用 DNS 轮询和 Squid 反向代理技术,实现了网站的负载均衡,从而提高了网站的可用性和可靠性。

 

      反向代理服务器也称为WEB加速服务器 ,它位于WEB 服务器的前端,充当WEB 服务器的内容缓存器。来降低实际的WEB服务器的负载。系统结构如下图


                                   什么是反向代理,如何利用反向代理提高网站性能

      现在有许多大型的门户网站如SINA 都采用squid 反向代理技术来加速网站的访问速度,可将不同的 URL 请求分发到后台不同的WEB 服务器上,同时互联网用户只能看到反向代理服务器的地址,加强了网站的访问安全。

反 向代理服务器是针对 WEB 服务器设置的,后台 WEB 服务器对互联网用户是透明的,用户只能看到反向代理服务器的地址,不清楚后台 WEB 服务器是如何组织架构的。当互联网用户请求 WEB 服务时,DNS 将请求的域名解析为反向代理服务器的 IP 地址,这样 URL 请求将被发送到反向代理服务器,由反向代理服务器负责处理用户的请求与应答、与后台 WEB 服务器交互。利用反向代理服务器减轻了后台 WEB 服务器的负载,提高了访问速度,同时避免了因用户直接与 WEB 服务器通信带来的安全隐患。

 

Squid 反向代理的实现原理

      目前有许多反向代理软件,比较有名的有 Nginx Squid 。其他还包括Socks、Apache、Jigsaw、Delegate等。

 

       Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。

 

        Squid 是由美国*大力资助的一项研究计划,其目的为解决网络带宽不足的问题,支持HTTP,HTTPS,FTP 等多种协议,是现在 Unix 系统上使用、最多功能也最完整的一套软体。下面将重点介绍 Squid 反向代理的实现原理和在提高网站性能方面的应用。

 

      Squid反向代理服务器位于本地 WEB 服务器和 Internet 之间 , 组织架构如下图


                                 什么是反向代理,如何利用反向代理提高网站性能

      客户端请求访问 WEB 服务时,DNS 将访问的域名解析为 Squid 反向代理服务器的 IP 地址,这样客户端的 URL 请求将被发送到反向代理服务器。如果 Squid 反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端,否则反向代理服务器将向后台的 WEB 服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。

 

      Squid 反向代理一般只缓存可缓冲的数据(比如 html 网页和图片等),而一些 CGI 脚本程序或者 ASP、JSP 之类的动态程序默认不缓存。它根据从 WEB 服务器返回的 HTTP 头标记来缓冲静态页面。有四个最重要 HTTP 头标记:

    ●Last-Modified: 告诉反向代理页面什么时间被修改
    ●Expires: 告诉反向代理页面什么时间应该从缓冲区中删除
    ●Cache-Control: 告诉反向代理页面是否应该被缓冲
    ●Pragma: 用来包含实现特定的指令,最常用的是 Pragma:no-cache

 

转载:http://www.houkai.com/2009/09/20/reversed-proxy.html