- 浏览: 156142 次
- 来自: ...
文章分类
- 全部博客 (151)
- Liferay.in.Action (3)
- 集群 (12)
- web (5)
- jna (2)
- 数据库 (7)
- Terracotta (11)
- xml (1)
- Hibernate (3)
- Jdbc (2)
- DDD (10)
- nosql (7)
- 云存储 (3)
- 云产品 (7)
- 云计算 (26)
- Hadoop (11)
- 虚拟化 (5)
- REST (3)
- 程序人生 (11)
- google (2)
- 安全应用 (5)
- LDAP (0)
- 安全技术 (5)
- android (4)
- 网络妙语 (1)
- HTML5 (1)
- 搜索引擎 (1)
- 架构设计 (5)
- redis (3)
- Cassandra (2)
最新评论
-
liwanfeng:
情况是这样的,你的文件我觉得还是比较小,我现在需要处理的XML ...
dom4j处理大文件
原文 http://www.opendigest.org/article.php/10
背景介绍 :
代理服务器是使用非常普遍的一种将局域网主机联入互联网的一种方式,使用代理上网可以节约紧缺的IP 地址资源,而且可以阻断外部主机对内部主机的访问,使内部网主机免受外部网主机的攻击。但是,如果想让互联网上的主机访问内部网的主机资源(例如:Web 站点),又想使内部网主机免受外部网主机攻击,一般的代理服务是不能实现的,需要使用反向代理来实现。
本文将详细介绍反向代理服务的概念以及如何利用反向代理服务器提高WEB 服务器的性能和安全性。
一. 反向代理的概念
什么是反向代理呢?其实,反向代理也就是通常所说的WEB 服务器加速,它是一种通过在繁忙的WEB 服务器和Internet 之间增加一个高速的WEB 缓冲服务器(即:WEB 反向代理服务器)来降低实际的WEB 服务器的负载。典型的结构如下图所示:
Web 服务器加速(反向代理)是针对Web 服务器提供加速功能的。它作为代理Cache ,但并不针对浏览器用户,而针对一台或多台特定Web 服务器(这也是反向代理名称的由来)。实施反向代理(如上图所示),只要将Reverse Proxy Cache 设备放置在一台或多台Web 服务器前端即可。当互联网用户访问某个WEB 服务器时,通过DNS 服务器解析后的IP 地址是Reverse Proxy Server 的IP 地址, 而非原始Web 服务器的IP 地址, 这时Reverse Proxy Server 设备充当Web 服务器,浏览器可以与它连接,无需再直接与Web 服务器相连。因此,大量Web 服务工作量被卸载到反向代理服务上。不但能够防止外部网主机直接和web 服务器直接通信带来的安全隐患,而且能够很大程度上减轻web 服务器的负担,提高访问速度。
二. 反向代理和其它代理的比较
下面将对几种典型的代理服务作一个简单的比较。 在网络上常见的代理服务器有三种:
1. 标准的代理缓冲服务器
一个标准的代理缓冲服务被用于缓存静态的网页(例如:html 文件和图片文件等)到本地网络上的一台主机上(即代理服务器)。当被缓存的页面被第二次访问的时候,浏览器将直接从本地代理服务器那里获取请求数据而不再向原web 站点请求数据。这样就节省了宝贵的网络带宽,而且提高了访问速度。但是,要想实现这种方式,必须在每一个内部主机的浏览器上明确指明代理服务器的IP 地址和端口号。客户端上网时,每次都把请求送给代理服务器处理,代理服务器根据请求确定是否连接到远程web 服务器获取数据。如果在本地缓冲区有目标文件,则直接将文件传给用户即可。如果没有的话则先取回文件,先在本地保存一份缓冲,然后将文件发给客户端浏览器。
2. 透明代理缓冲服务器
透明代理缓冲服务和标准代理服务器的功能完全相同。但是,代理操作对客户端的浏览器是透明的(即不需指明代理服务器的IP 和端口)。透明代理服务器阻断网络通信,并且过滤出访问外部的HTTP (80 端口)流量。如果客户端的请求在本地有缓冲则将缓冲的数据直接发给用户,如果在本地没有缓冲则向远程web 服务器发出请求,其余操作和标准的代理服务器完全相同。对于Linux 操作系统来说,透明代理使用Iptables 或者Ipchains 实现。因为不需要对浏览器作任何设置,所以,透明代理对于ISP (Internet 服务器提供商)特别有用。
3. 反向代理缓冲服务器
反向代理是和前两种代理完全不同的一种代理服务。使用它可以降低原始WEB 服务器的负载。反向代理服务器承担了对原始WEB 服务器的静态页面的请求,防止原始服务器过载。它位于本地WEB 服务器和Internet 之间,处理所有对WEB 服务器的请求,组织了WEB 服务器和Internet 的直接通信。如果互联网用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户。如果没有缓冲则先向WEB 服务器发出请求,取回数据,本地缓存后再发送给用户。这种方式通过降低了向WEB 服务器的请求数从而降低了WEB 服务器的负载。
三.反向代理工作原理
反向代理服务器位于本地WEB 服务器和Internet 之间, 如下图所示:
当用户浏览器发出一个HTTP 请求时,通过域名解析将请求定向到反向代理服务器(如果要实现多个WEB 服务器的反向代理,需要将多个WEB 服务器的域名都指向反向代理服务器)。由反向代理服务器处理器请求。反向代理一般只缓存可缓冲的数据(比如html 网页和图片等),而一些CGI 脚本程序或者ASP 之类的程序不缓存。它根据从WEB 服务器返回的HTTP 头标记来缓冲静态页面。有四个最重要HTTP 头标记:
- Last-Modified: 告诉反向代理页面什么时间被修改
- Expires: 告诉反向代理页面什么时间应该从缓冲区中删除
- Cache-Control: 告诉反向代理页面是否应该被缓冲
- Pragma: 告诉反向代理页面是否应该被缓冲.
例如:在默认情况下,ASP 页面返回” Cache-control: private.” ,所以ASP 页面时不会在反向代理服务器缓存的
四. 代理服务器软件squid 简介
Squid Internet Object Cache (Harvest Project 的后续版本) 是美国政府大力助的一项研究计划,其目的为解决网络带宽不足的问题,是现在Unix 系统上使用者最多功能也最完整的一套软体。Apache 和Netscape 虽附有相关的Proxy 模块,但因其功能简单而不够普及。有关squid 的详细说明可到squid 网站(http://www.squid-cache.org) 查询。
Squid 最典型的应用是代理局域网的机器联入互联网,它支持现在流行的网络协议。 Squid 的另一项非常出色的功能就是实现反向代理功能。
五.使用Squid 配置反向代理(HTTP 加速器)
通过squid 配置反向代理主要就是配置“squid.conf ”这个配置文件。下面以Linux 操作系统为例进行介绍,其它版本的在UNIX 也同样适用。在Linux 中squid 如果是以源代码方式安装的话,这个文件一般在“/usr/local/squid/etc/ ”目录下。如果是系统自带的squid ,一般配置文件在“/etc/squid/ ”目录下。
1. Squid 反向代理单个后台WEB 服务器
如果WEB 服务器和反向代理服务器是两台单独的机器(一般的反向代理应该有两块网卡分别连接了内外部网络)。那么,应该修改下面的内容来设置反向代理服务。
http_port 80 # squid
监听的端口
httpd_accel_host 172.16.250.250 #
内部WEB
服务器的IP
地址
httpd_accel_port 80 # WEB
服务器的IP
地址
httpd_accel_single_host on #
转发为缓冲的请求到一台单独的机器
httpd_accel_with_proxy on #
httpd_accel_uses_host_header off
如果WEB 服务器和反向代理服务器是同一台机器。那么,应该设置WEB 服务器的监听端口为非80 端口(比如:81 端口)。要修改的内容如下:
http_port 80 # squid
监听的端口
httpd_accel_host localhost #
内部WEB
服务器的IP
地址
httpd_accel_port 81 # WEB
服务器的IP
地址
httpd_accel_single_host on #
转发为缓冲的请求到一台单独的机器
httpd_accel_with_proxy on #
httpd_accel_uses_host_header off
下面解释一下配置指令。
http_port 80
选项 http_port 指定squid 监听HTTP 请求的端口,一般都设置成80 端口,这样使用户感觉不到反向代理的存在,就像访问真正的WEB 服务器一样。
httpd_accel_host 172.16.250.250 和 httpd_accel_port 80
选项httpd_accel_host 和 httpd_accel_port 指定WEB 服务器的IP 地址和端口号,可以根据自己的WEB 服务器的实际情况而定。
httpd_accel_single_host on
选项 httpd_accel_single_host 为on 时,squid 被设置成仅对单一的web 服务器作反向代理。不考虑HTTP 头信息,Squid 转发所有的未被缓冲的页面请求到这个web 服务器。如果squid 需要做多个web 服务器反向代理,必须将此选项设置为off ,并且使用转向器或者DNS 去映射请求到合适的后台WEB 服务器。
httpd_accel_with_proxy on
如果希望squid 既作反向代理服务器又作本地机器的上网代理,需要将httpd_accel_with_proxy 改为 on ,默认情况下是off
httpd_accel_uses_host_header off
在HTTP 协议1.1 中,HTTP 请求包括一个主机头信息,指定URL 的主机名或者主机的IP 地址。这个选项可以用来完成多个后台WEB 服务器的反向代理功能。
2 . Squid 反向代理多个后台 WEB 服务器
我们可以用 Squid 反向代理多个后台 WEB 服务器。例如:我们可以配置 squid 同时反向代理 www.abc.com, www.xyz.com, www.lmn.com 三个后台 WEB 服务器,示意图如下:
Squid 的配置如下:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_single_host off
httpd_accel_uses_host_header on
(注意: 编译Squid 时需激活Internal DNS 选项)
然后设置设置反响代理需要的域名解析(Internet 用户通过这里解析三个网站的域名)如下:
www.abc.com 202.102.240.74
www.xyz.com 202.102.240.74
www.lmn.com 202.102.240.74
使三个域名都指向反向代理服务器的IP 地址202.102.240.74 。
下面设置反向代理所需要的DNS 入口信息(即设置内部DNS ,仅仅是squid 在内部使用,Internet 用户不可见)。有两种方法可以设置内部DNS ,使用内部DNS 服务器来解析或者使用/etc/hosts 文件来实现。
使用内部DNS
服务器的资源记录如下:
www.abc.com IN A 172.16.1.2
www.xyz.com IN A 172.16.1.3
www.lmn.com IN A 172.16.1.4
如果使用/etc/hosts
文件来实现内部DNS
(编译时应使用disable internal dns
选项),
编辑/etc/hosts
文件添加如下条目:
172.16.1.2 www.abc.com
172.16.1.3 www.xyz.com
172.16.1.4 www.lmn.com
结论
通过本文中的论述和相关实例,可以看出,反向代理方式不单是一种WEB 服务器加速器,而且使也一种对外提供Web 发布时使用的有效的防火墙技术,使用它不但能节约紧缺的IP 地址资源,加速WEB 服务器的访问速度,而且能够保护WEB 主机,因此能够适应多种应用场合。
发表评论
-
揭开J2EE集群的神秘面纱(二)
2010-10-19 21:24 821原文 http://blog.csdn.net/ESoftW ... -
揭开J2EE集群的神秘面纱(一)
2010-10-19 21:22 970原文 http://blog.csdn.net/ESo ... -
NOSQL之旅-----HBase
2010-10-10 18:54 1025原文 http://yuquan-nana.iteye ... -
基于LVS的Linux负载均衡技术实现(第一篇:基本原理)
2010-10-10 12:25 976原文 http://linux.chinaunix.n ... -
手把手教你配置Windows2003集群(图) 3
2010-10-10 12:02 1224原文 http://publish.it168.com ... -
手把手教你配置Windows2003集群(图) 2
2010-10-10 12:01 1364原文 http://publish.it168.com/200 ... -
Windows 2008网络负载均衡之入门篇
2010-10-10 11:57 1009原文 http://windows.chinaitla ... -
简谈Windows负载均衡的特点
2010-10-10 11:56 1146原文 http://windows.chinaitlab.c ... -
配置Windows Server 2003网络负载均衡
2010-10-10 11:54 1102原文 http://windows.chinaitlab.co ... -
Linux Cluster案例分析之 Google的Linux集群解决方案(2)
2010-10-05 18:58 1302原文地址 http://www.opendigest.org/ ... -
Linux Cluster案例分析之 Google的Linux集群解决方案(1)
2010-10-05 18:44 1321原文地址 http://www.opendigest.org/ ...
相关推荐
详细解析用Squid实现反向代理的方法.。。。。
squid反向代理squid反向代理squid反向代理squid反向代理squid反向代理squid反向代理squid反向代理squid反向代理squid反向代理squid反向代理squid反向代理squid反向代理
Squid实现反向代理并且具备内网代理.pdf
Squid实现反向代理并且具备内网代理.docx
Squid 2.6 反向代理配置.doc, Squid 代理配置
主要例出squid.conf的几种反向代理的配置例子
利用squid做反向代理服务器,squid反向代理配置
有需要的可以学习,可以给您的网站做反向代理加速。
Squid代理服务器原理
RHEL5上用LVS和heartbeat实现squid反向代理的高可用性
Squid缓存代理服务器的安装与配置(普通代理 透明代理 反向代理)
下载反向代理服务器软件采用squid,下载地址: http://www.squid-cache.org/Versions/v2/2.2/squid-2.2.STABLE5-src.tar.gz 下载后存放在/usr/local/squid/src目录里,文件名是 squid-2.2.STABLE5 ...
LVS+squid构建HA反向代理方案,笔者根据自己的工作经验和学习的知识程度,对构建高可用的集群方案提出自己的想法,相关的学习材料请大家继续跟踪
也就是说,当一个用户想要下载一个主页时,它向Squid发出一个申请,要Squid替它下载,然后Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的...
Centos中Squid代理服务器安装和基本设置(含反向代理) 给网络班的学生上课时使用的简单教学课件。
Linux运维-6.集群-集群视频-5、Squid缓存、代理服务-20、Squid 反向代理、ACL访问控
本文介绍了代理服务器的概念、作用、产生的原因以及工作原理。使用Linux下的Squid代理上网的原因。 Squid 安装、配置、一个Squid配置实例以及客户端的设置。
详细介绍了squid的用法 的配置步骤,结合iptables实现squid的透明代理
安装篇: 本教程应用环境为干净centos 5.5 ,预先分好并加载/data分区,并且关闭selinux及iptables 首先修改文件描述符并设定临时端口范围,这些设置重启后生效 代码如下: cat >> /etc/security/limits.conf <...
在RedHat linux 9.0下用squid iptables实现透明代理.pdf