简介普通代理透明代理反向代理故障处理一个范例一个限制访问的范例官方网站:相关技术网站:一.代理服务简介返回1.什么是代理服务器(ProxyServer)代理服务可以代表其它计算机传递数据包或信息,这些数据包和信息包括网页、电子邮件、多媒体文件和其它网络应用程序等。通过它的文件缓存和访问控制等功能,可以实现快速浏览和对用户访问的有效管理。Web代理服务器(通常所说的代理服务器)是介于浏览器和Web服务器之间的一台服务器,当你通过代理服务器上网浏览时,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。而且,大部分代理服务器都具有缓冲的功能,就好象一个大的Cache,它有很大的存储空间,它不断将新取得数据储存到它本机的存储器上,如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率。更重要的是:代理服务器是Internet链路级网关所提供的一种重要的安全功能,它的工作主要在开放系统互联(OSI)模型的对话层。主要的功能有:1、连接Internet与Intranet充当firewall(防火墙):因为所有内部网的用户通过代理服务器访问外界时,只映射为一个IP地址,所以外界不能直接访问到内部网;同时可以设置IP地址过滤,限制内部网对外部的访问权限;另外,两个没有互联的内部网,也可以通过第三方的代理服务器进行互联来交换信息。2、共享因特网连接,节省IP开销:如前面所讲,所有用户对外只占用一个IP,所以不必租用过多的IP地址,降低网络的维护成本。这样,局域局内没有与外网相连的众多机器就可以通过内网的一台代理服务器连接到外网,大大减少费用。当然也有它不利的一面,如许多网络黑客通过这种方法隐藏自己的真实IP地址,而逃过监视。3、提高访问速度,节约通信带宽。而且通常代理服务器都设置一个较大的硬盘缓冲区(可能高达几个GB或更大),当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时,则直接由缓冲区中取出信息,传给用户,从而达到提高访问速度的目的。2.代理服务器的硬件需求代理服务器对于硬件的要求相当的高!因为我们架设代理服务器的目的就是希望能够加快网络的传输速度因此,虽然代理服务器几乎在任何的Linux系统上面都能跑,但是代理服务器最好还是有较高的硬件配置:CPU足够好;RAM足够大,这也是很重要的一个硬件参数HardDisk最好能用SCSI接口的,因为速度与稳定度都比较好!如果不能的话,那么IDE接口的硬盘由于目前速度也越来越快,所以使用IDE也没有问题,但是最好是『多块硬盘』的架构,例如我总共需要30GB的硬盘空间,那么最好是10GB的硬盘三块这样的架构较佳。最好在架设代理服务器时,将整体主机的规划做好,并且让代理服务器主机的服务单纯一点,最好只负责代理服务每颗硬盘的容量不需要太大,此外,最好将硬盘分割一下,一个分区在2~4GB之间即可,因为分太大的话资料的搜寻耗费时间较长,但是分区太小又可能造成空间的浪费cache是放置在某个目录下的,而最好一个目录底下就是独立的一个partition。此外,由于cache所在的硬盘常常会有资料的存取,因此可能此一硬盘的损耗率会比较大,所以这个cache所在的硬盘最好不要跟重要数据文件,例如/,/etc,/usr,/home等等重要的系统文件放在一起!也由于cache所在的硬盘资料存取太密集了,所以,硬盘的选择上面需要(1)转速不能太低;(2)磁头的机械臂需要可以忍受频繁的动作;(3)发热量不可太大,或者可以考虑加装硬盘用风扇。网络卡与网络周边最好使用GBytes的网络卡3.使用squid的好处squid是开源软件,性能优秀。并仍在世界各地的squid开发者的共同努力下,不断发展。快速响应,减少网络阻塞,Squid将远程Internet对象保存为本地拷贝。当本地用户再次访问这些对象时,Squid可以直接快速地提供对这些对象的访问,而不必再次占用带宽访问远程服务器上的对象。增强访问控制,提高安全性。可以针对特定的的网站、用户、网络、数据类型实施访问控制squid可以工作在普通代理模式、透明代理模式各反向代理模式4.squid的结构多个squid代理服务器可以通过icp协议相互沟通,形成树形层次关系(父代理、兄弟代理、子代理),构建代理服务器群。二.squid.conf的典型配置(普通代理)返回1.配置#vi/etc/squid/squid.conf#http_port指令告诉squid在哪个端口侦听HTTP请求。默认端口是3128,除下面的形式外,也可以是http_port192.168.63.50:3128http_port3128icp_port3130#缓存目录的设置,可以设置多个缓存目录,语法为:cache_diraufs|ufs目录所在MBytes大小dir1dir2cache_dirufs/var/spool/squid1000641024#下面是关于日志文件的放置目录与文件名!cache_access_log/var/log/squid/access.logcache_log/var/log/squid/cache.logcache_store_log/var/log/squid/store.logpid_filename/var/run/squid.pid#关闭认证机制,有些版本的squid会自动的加入代理认证机制,而普通情况下是不需要的,故找到包括auth_param的行,给它们加上注释#auth_parambasicchildren5#auth_parambasicrealmSquidproxy-cachingwebserver#auth_parambasiccredentialsttl2hours#设置squid用户及用户组、管理员账号cache_effective_usersquidcache_effective_groupsquidcache_mgryouraccount@your.e.mail#与内存有关的配置:因为我的系统内存很小,所以只给8MB!如果您的物理内存很大的情况下,例如512MB,可以考虑加大到64或128MB。cache_mem128MB#与磁盘容量有关的配置(注:下列的90与95是百分比),如果您的cache_dir所在磁盘很大时,可以考虑将4096改成32768KBcache_swap_low90cache_swap_high95maximum_object_size4096KB#与内存保存资料有关的配置maximum_object_size_in_memory8KB#定义acl(访问控制列表),语法为:aclaclacl名称acl类型配置的内容#黑体为用户自定义部分aclAllsrc0/0aclManagerprotocache_objectaclLocalhostsrc127.0.0.1/32aclSafe_portsport8021443563702102804885917771025-65535aclSSL_ports443563aclCONNECTmethodCONNECTaclMyNetworksrc192.168.0.0/16#利用前面定义的acl,定义访问控制规则http_accessallowManagerLocalhosthttp_accessdenyManagerhttp_accessdeny!Safe_portshttp_accessdenyCONNECT!SSL_portshttp_accessallowMyNetworkhttp_accessdenyAll#定义与其它代理服务器的关系,语法:cache_peer主机名称类别http_porticp_port其它参数cache_peer192.168.60.6parent44807no-querydefault#设置与其它代理服务器的关系:#cache_peer_access上层Proxyallow|denyacl名称#cache_peer_access192.168.60.6allowaclxxx#cache_peer_access192.168.60.6deny!aclxxxcoredump_dir/var/spool/squid2.激活squid1).在开启squid之前,你应该验证其配置文件是否正确。运行如下命令即可:#squid-kparse假如你看不到输出,配置文件有效,你能继续后面的步骤。然而,如果配置文件包含错误,squid会告诉你:2).初始化cache目录.即建立缓存目录的存储格式只需在第一次启动squid服务之前执行(在初次运行squid之前,或者无论何时你增加了新的cache_dir,你必须初始化cache目录。)#squid-zcache目录初始化可能花费一些时间,依赖于cache目录的大小和数量,以及磁盘驱动器的速度。假如你想观察这个过程,请使用-X选项:#squid-zX3).启动squid服务#servicesquidstart假定squid安装在/usr/local/squid目录下,也可以#/usr/local/squid/sbin/squid-sD4).停止squid最安全的停止squid的方法是使用squid-kshutdown命令:#squid-kshutdown5).重配置运行中的squid进程在你了解了更多关于squid的知识后,你会发现对squid.conf文件做了许多改动。为了让新设置生效,你可以关闭和重启squid,或者在squid运行时,重配置它。重配置运行中的squid最好的方法是使用squid-kreconfigure命令:#squid-kreconfigure6).滚动日志文件除非你在squid.conf里禁止,squid会写大量的日志文件。你必须周期性的滚动日志文件,以阻止它们变得太大。squid将大量的重要信息写入日志,假如写不进去了,squid会发生错误并退出。为了合理控制磁盘空间消耗,在cron里使用如下命令:%squid-krotate例如,如下任务接口在每天的早上4点滚动日志:04***/usr/local/squid/sbin/squid-krotate该命令做两件事。首先,它关闭当前打开的日志文件。然后,通过在文件名后加数字扩展名,它重命名cache.log,store.log,和access.log。例如,cache.log变成cache.log.0,cache.log.0变成cache.log.1,如此继续,滚动到logfile_rotate选项指定的值。squid仅仅保存每个日志文件的最后logfile_rotate版本。更老的版本在重命名过程中被删除。假如你想保存更多的拷贝,你需要增加logfile_rotate限制,或者编写脚本用于将日志文件移动到其他位置。请见13.7章关于滚动日志的其他信息。3.访问控制示例1)禁止访问某个网站在squid配置文件中添加以下acl名称及访问规则,并重新加载配置文件aclsinadstdomain.sina.com.cn.sina.comhttp_accessdenysina或aclsinadst58.63.236.2658.63.236.2758.63.236.2858.63.236.2958.63.236.3058.63.236.3158.63.236.3258.63.236.3358.63.236.3458.63.236.3558.63.236.3658.63.236.3758.63.236.3858.63.236.3958.63.236.4958.63.236.50