`

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

阅读更多

这几天常看到kangzj在博客里谈论代理,上篇博文 也 提到过反向代理,有同学对利用绝对路径绕过ghs起到加速作用不是很理解,那就总结一下反向代理的知识。谈到google ghs时,说绕过ghs反向代理服务器直接使用*.appspot.com起到加速的目的,好像本文标题“利用反向代理提高网站速度”有点矛盾,其实不 然,我们域名下的资源文件绕过一个反向代理服务器,得到的appspot反向代理服务器更直接而且它有负载均衡机制。

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

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

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

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

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

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

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

3.现在看一个实例。利用 squid 反向代理提高网站性能 [参考www.bitscn.com ]

反向代理技术在提高网站访问速度,增强网站可用性、安全性方面有很好的用途。可以利用 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

配置 Squid1 服务器 ,以下为实战,可跳过直接看测试和总结 (已用红色标出)

    下载 squid-3.0.STABLE8.tar.gz 源码包,将其放在 /home 目录下
    1.解压缩tar – zxvf squid-3.0.STABLE8.tar.gz
    2.设置配置参数:cd squid-3.0.STABLE10

    ./configure – prefix=/usr/local/squid 

    将 squid 安装在 /usr/local 目录下
    3.编译安装:make&make install安装完以后会在 /usr/local 目录下看见 squid 目录。
    4.配置 squid 配置文件
    编辑 squid.conf 文件,vi /usr/local/squid/etc/squid.conf 

cache_effective_user squid
cache_effective_group squid
######### 设定 squid 的主机名 , 如无此项 squid 将无法启动
visible_hostname squid1.nlc.gov.cn
############# 配置 squid 为加速模式 #################
http_port 80 accel vhost vport
icp_port 3130
##### 配置 squid2、squid3 为其邻居,当 squid1 在其缓存中没有找到请求的资源时,通过 ICP 查询去其邻居中取得缓存
cache_peer squid2.ibm.com.cn sibling 80 3130
cache_peer squid3.ibm.com.cn sibling 80 3130
##### squid1 的三个父节点,originserver 参数指明是源服务器,
round-robin  参数指明 squid 通过轮询方式将请求分发到其中一台父节点;
squid 同时会对这些父节点的健康状态进行检查,如果父节点 down 了,
那么 squid 会从剩余的 origin 服务器中抓取数据
cache_peer 210.82.118.195 parent 8080 0 no-query originserver round-robin \
                                              name=webServer1
cache_peer 192.168.76.226 parent 8080 0 no-query originserver round-robin \
                                              name=webServer2
cache_peer 192.168.76.227 parent 8080 0 no-query originserver round-robin \
                                            name=webServer3
#### 将 wenjin.cache.ibm.com.cn 域的请求通过 RR 轮询方式转发到三个父节点中的一个
cache_peer_domain webServer1 webServer2 webServer3 wenjin.cache.ibm.com.cn
##### 下面是一些访问控制、日志和缓存目录的设置
acl localnet src 192.168.76.223 192.168.76.224 192.168.76.225
acl all src 0.0.0.0/0.0.0.0
http_access allow all
icp_access allow localnet
cache_log /usr/local/squid/var/logs/cache.log
access_log /usr/local/squid/var/logs/access.log squid
cache_dir ufs /usr/local/squid/var/cache/ 1000 16 256
####### 对 squid 的一些优化 ###############
maximum_object_size 10240 KB  ### 能缓存的最大对象为 10M
maximum_object_size_in_memory 512 KB ### 内存中缓存的最大对象 512K
cache_mem 256 MB  ###squid 用于缓存的内存量

    保存后 :wq 退出。 feedom.net

    在 /etc/hosts 文件中添加

192.168.76.223  squid1.ibm.com.cn
192.168.76.224  squid2.ibm.com.cn
192.168.76.225  squid3.ibm.com.cn

    保存后 : wq 退出。

    检查 squid 配置文件正确与否:/usr/local/squid/bin/squid – k parse

    生成缓存目录/usr/local/squid/bin/squid – z 54ne.com

    启动squid:/usr/local/squid/bin/squid

    配置 squid2 和 squid3 服务器

    squid2 和 squid3 服务器的配置方法和配置参数和 squid1 一样,配置完成后,分别启动这两个服务器上的 squid 服务。

    在 squid 的日志文件 cache.log 中,出现如下日志信息则说明三台 squid 之间成功配置为 sibling,且配置了三个父代理。

2008/11/17 10:08:47| Configuring Sibling squid1.ibm.com.cn/80/3130
2008/11/17 10:08:47| Configuring Sibling squid3.ibm.com.cn/80/3130
2008/11/17 10:08:47| Configuring Parent 210.82.118.195/8080/0
2008/11/17 10:08:47| Configuring Parent 192.168.76.226/8080/0
2008/11/17 10:08:47| Configuring Parent 192.168.76.227/8080/0
2008/11/17 10:08:47| Ready to serve requests.

    测试

    测试之前,保证 DNS 服务、三台 squid 服务和三台 web 服务都正常起来。在客户端输入http://wenjin.cache.ibm.com.cn,则正确的显示该网页。服务器端的响应对客户端是透明的,客 户端不知道请求是由哪台 WEB 服务器处理的;而且其中某台 Squid 服务器或 WEB 服务器发生故障,也不影响服务的正常运行。

    总结  

    Squid 是一个开源的软件,利用它的反向代理技术可以提高网站系统的访问速度。本文在真实的网络环境下,利用三台 squid 反向代理服务器加速了网站的性能,同时结合 DNS 轮询技术实现了网站的负载均衡。经过一段时间的测试和试运行,该网站的访问速度和可用性方面都有很大的提高,从未出现过网站服务中断情况。

本文永久链接  http://www.houkai.com/2009/09/20/reversed-proxy.html
转载注明来自  HOUKAI.COM <script src="http://china-addthis.googlecode.com/svn/trunk/addthis.js" type="text/javascript"></script>分享家:Addthis中国

分享到:
评论

相关推荐

    利用 squid 反向代理提高网站性能.mht

    一、安装反向代理服务器 1.下载反向代理服务器软件采用squid,下载地址: http://www.squid-cache.org/Versions/v2/2.2/squid-2.2.STABLE5-src.tar.gz 下载后存放在/usr/local/squid/src目录里,文件名是 squid-2.2...

    nginx正向代理与反向代理详解

    Nginx是一款高性能的HTTP和反向代理服务器,同时也是一款邮件代理服务器。本文将详细介绍Nginx如何实现正向代理和反向代理,以及这两种代理方式的应用场景。 **正向代理** 正向代理的主要作用是让内部网络中的设备...

    Web APP 如何实现类似Nginx反向代理转发功能-zhangyannan1

    Web APP 实现类似 Nginx 反向代理转发功能 Web APP 如何实现类似 Nginx 反向...使用 Web APP 实现类似 Nginx 反向代理转发功能可以提高 Web 应用程序的性能和安全性,并且可以灵活地根据需要调整反向代理转发规则。

    tomcat反向代理机制视频

    综上所述,这个“Tomcat反向代理机制视频”为开发者和系统管理员提供了一个全面的学习资源,通过三个阶段的详细讲解,帮助他们掌握如何在实际项目中运用Tomcat的反向代理功能,提升系统性能和安全性。无论是对Tomcat...

    win2019下IIS部署反向代理及Rewrite包

    在IIS中设置反向代理,可以隐藏后端服务器的结构,提高安全性,同时通过代理进行负载均衡和缓存优化。这对于运行在非标准端口或者需要整合多个服务的应用来说非常有用。 **IIS Rewrite模块**: IIS Rewrite模块是...

    nginx 反向代理.docx

    ### Nginx 反向代理知识点详解 #### 一、代理概述 ...- 反向代理代理服务器,主要用于提高安全性和性能。 - Nginx作为一款优秀的反向代理服务器,可以通过简单的配置实现复杂的网络功能,如负载均衡和缓存等。

    Cobalt_Strike_C2隐匿多级nginx反向代理1

    在本文中,我们将讨论如何利用多级 Nginx 反向代理来隐藏 C2 通信,提高隐蔽性。 首先,我们要了解 Nginx 反向代理的基本原理。Nginx 是一款高性能的 HTTP 和反向代理服务器,可以将客户端请求转发到其他服务器,...

    详细解析用Squid实现反向代理的方法

    反向代理服务器是提高WEB服务器性能和安全性的解决方案。它位于本地WEB服务器和Internet之间,承担对原始WEB服务器的静态页面的请求,防止原始服务器过载。反向代理服务器可以降低WEB服务器的负载,提高访问速度,...

    7ghostPHP反向代理脚本

    总的来说,7ghostPHP反向代理脚本提供了一种利用PHP实现反向代理的方法,通过`.htaccess`的URL重写,`index.php`的请求处理和`_admin`的后台管理,构建了一个高效、安全的Web服务环境。这不仅能够保护内部服务器免受...

    nginx+tomcat反向代理安装配置

    `nginx`作为一款高性能的反向代理服务器和负载均衡器,常用于处理静态资源,而`tomcat`则作为Java应用服务器,主要负责运行Java Web应用。下面我们将详细探讨`nginx1.6`的安装、`tomcat7`的安装以及它们之间的反向...

    nginx实现Tomcat反向代理

    本篇文章将详细介绍如何利用Nginx实现对Tomcat的反向代理,以及如何配置HTTPS,以提升网站的安全性。 首先,理解反向代理的概念。反向代理是指客户端发送请求到Nginx服务器,Nginx再将请求转发给后端的Tomcat服务器...

    kangle反向代理linux安装包

    Kangle是一款高性能、安全且易于管理的Web服务器软件,尤其适用于搭建反向代理服务。它在Linux操作系统上运行,能够帮助用户实现高效的数据传输和负载均衡。本安装包"Kangle-3.5.8"提供了在Linux系统上部署Kangle...

    https通信nginx反向代理443端口

    在IT行业中,HTTPS通信是确保网站数据安全传输的重要手段,而Nginx作为一款高性能的HTTP和反向代理服务器,常被用来实现这种安全通信。本文将深入探讨如何通过Nginx配置HTTPS服务器,实现443端口的反向代理,以及与...

    nginx 负载均衡与反向代理资源

    3. **反向代理高级配置**:还可以设置缓存、负载均衡策略、健康检查等,以优化反向代理性能。 ### 三、Nginx的负载均衡 1. **负载均衡原理**:通过将来自客户端的请求分发到多个后端服务器,负载均衡可以防止单一...

    Nginx反向代理服务器配置基础教程

    ### Nginx反向代理服务器配置基础教程 #### 一、系统架构 在现代Web服务部署中,Nginx作为一款高性能的HTTP和反向代理Web服务器,被广泛应用于负载均衡、反向代理以及静态资源服务等多个场景。本文将详细介绍如何...

    nginx反向代理配置及优化以及核心讲解以及高性能集群搭建

    Nginx凭借其高效的反向代理和负载均衡能力,成为构建高性能网站和微服务架构的关键组件。通过合理的配置和优化,可以大大提高系统的稳定性和响应速度。同时,Nginx的集群搭建和Session管理策略也是保障服务高可用性...

    squid反向代理配置例子

    正确配置Squid可以帮助提高网站性能,减少带宽消耗,并为用户提供更快的响应时间。需要注意的是,实际应用时需要根据具体网络环境和需求进行适当的调整,例如添加安全策略、缓存策略、日志记录等。在部署前,务必...

    nginx配置反向代理

    Nginx 以其轻量级、高性能的特点,常被用作静态资源的服务器或反向代理,以提高系统的处理能力和响应速度。 **1. 为什么选择Nginx作为反向代理** Nginx 的反向代理功能可以在 Apache 服务器前作为一个代理服务器,...

Global site tag (gtag.js) - Google Analytics