故宫网站建设,如何制作门户网站,网站建设对接流程图,自助建站系统平台代理服务器是使用非常普遍的一种将局域网主机联入互联网的一种方式#xff0c;使用代理上网可以节约紧缺的IP地址资源#xff0c;而且可以阻断外部主机对内部主机的访问#xff0c;使内部网主机免受外部网主机的***。但是#xff0c;如果想让互联网上的主机访问内部网的主机… 代理服务器是使用非常普遍的一种将局域网主机联入互联网的一种方式使用代理上网可以节约紧缺的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和端口。透明代理服务器阻断网络通信并 且过滤出访问外部的HTTP80端口流量。如果客户端的请求在本地有缓冲则将缓冲的数据直接发给用户如果在本地没有缓冲则向远程web服务器发出请求其余操作和标准的代 理服务器完全相同。对于Linux操作系统来说透明代理使用Iptables或者Ipchains实现。因为不需要对浏览器作任何设置所以透明代理对于ISPInternet服务器提供商特 别有用。 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网站([url]http://www.squid-cache.org[/url])查询。 Squid最典型的应用是代理局域网的机器联入互联网它支持现在流行的网络协议。Squid的另一项非常出色的功能就是实现反向代理功能。 五使用Squid2.5配置反向代理HTTP 加速器 通过squid配置反向代理主要就是配置“squid.conf”这个配置文件。下面以Linux操作系统为例进行介绍其它版本的在UNIX也同样适用。在Linux中squid如果是以源代码方 式安装的话这个文件一般在“/usr/local/squid/etc/”目录下。如果是系统自带的squid一般配置文件在“/etc/squid/”目录下。 1 Squid2.5反向代理单个后台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默认情况下是offhttpd_accel_uses_host_header off 在HTTP协议1.1中HTTP请求包括一个主机头信息指定URL的主机名或者主机的IP地址。这个选项可以用来完成多个后台WEB服务器的反向代理功能。 2Squid反向代理多个后台WEB服务器我们可以用Squid反向代理多个后台WEB服务器。例如我们可以配置squid同时反向代理[url]www.abc.com[/url], [url]www.xyz.com[/url], [url]www.lmn.com[/url]三个后台WEB服务器示意图如下 Squid的配置如下 httpd_accel_host virtualhttpd_accel_port 80 httpd_accel_single_host off httpd_accel_uses_host_header on注意:编译Squid时需激活Internal DNS选项然后设置设置反响代理需要的域名解析Internet用户通过这里解析三个网站的域名如下[url]www.abc.com[/url] 202.102.240.74[url]www.xyz.com[/url] 202.102.240.74[url]www.lmn.com[/url] 202.102.240.74使三个域名都指向反向代理服务器的IP地址202.102.240.74。下面设置反向代理所需要的DNS入口信息即设置内部DNS仅仅是squid在内部使用Internet用户不可见。有两种方法可以设置内部DNS使用内部DNS服务器来解析或者使 用/etc/hosts文件来实现。使用内部DNS服务器的资源记录如下[url]www.abc.com[/url] IN A 172.16.1.2[url]www.xyz.com[/url] IN A 172.16.1.3[url]www.lmn.com[/url] IN A 172.16.1.4 如果使用/etc/hosts文件来实现内部DNS编译时应使用disable internal dns选项,编辑/etc/hosts文件添加如下条目 172.16.1.2 [url]www.abc.com[/url]172.16.1.3 [url]www.xyz.com[/url]172.16.1.4 [url]www.lmn.com[/url] 结论 通过本文中的论述和相关实例可以看出反向代理方式不单是一种WEB服务器加速器而且使也一种对外提供Web发布时使用的有效的防火墙技术使用它不但能节约紧缺的 IP地址资源加速WEB服务器的访问速度而且能够保护WEB主机因此能够适应多种应用场合。 转载于:https://blog.51cto.com/jeck2046/95476