当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > Linux下利用Squid构建高速的ProxyServer

Linux服务器
Linux上双网卡绑定方法(Suse9SP3)
Linux操作系统调优参数的意义
Linux下使用SSH客户端及其Sftp文件传送
教你恢复被误删除的Linux文件
SQL Server注入大全及防御
Linux无法解析域名的解决办法
Linux系统下安装和配置MyEclipse的方法
Ubuntu下VirtualBox 1.4.0设置文件共享
Windows与Linux系统共享StarDict字典文件
修改Linux下相关的登陆信息
Windows通过SecureCRT远程登录Linux主机
Linux操作系统如何修改SWAP交换区的大小
Linux操作系统下为Apache目录添加密码
Linux时间设置与同步(NTP)
Linux内核补丁AMD旁路转换缓冲(TLB)错误
Linux架设DHCP服务器的方法
Fedora 8下Apache配置与管理
Linux操作系统下用单网卡捆绑双IP的方法
Ubuntu Linux系统环境变量配置文件
SUSE Linux中将Tomcat作为Service运行

Linux服务器 中的 Linux下利用Squid构建高速的ProxyServer


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 66 ::
收藏到网摘: n/a

一、什么是ProxyServer(代理服务器),Proxy的作用

在真实世界中我们常常会去帮人家办一些事情,例如帮人家交电费什么的,在这种情况下你不是电表的主人,而是代办者(代理者)的身份。在网络世界中Proxy就是相当于那个帮人家交电费的人了,当我们发出连接请求的时候,就会通过Proxy去帮我们直接与目标服务器沟通,帮我们取得资料。

client通过ProxyServer上网的步骤如下:

①client端向Server发出请求。

②Server收到请求后比较判断Cache中时候存在client想要的资料,如果没有则向远程Server发送数据请求。

③将请求回来的资料先存放到Cache中,再将资料传送给client端。

④当client发出的请求中所需要的资料在Cache中有,则将Cache中的资料直接传送给client端。

虽然当第一访问这向Proxy请求的数据Cache中没有时,Proxy抓取数据后会先保存在Cache中,这样访问速度变慢了,可是第二个访问者以及后来的访问者需要该资料的时候,proxy都不要想远程服务器请求,直接将cache中的资料发送给后来的请求者就行了,这样就减少了连接远程服务器的流量,另外由于proxy是在本地的,所以传输速度也更快。

二、使用Squid在构建ProxyServer

本文中笔者所使用的环境是:

操作系统:Redhat9.0,内核:2.4.20-31.9,其他系统套件已经通过apt更新到最新了。

1.编译安装Squid

由于Squid对系统硬件要求比较高,所以我们安装的时候应尽量优化。

CODE:#groupaddsquid#useraddsquid添加suqid用户和用户组

CODE:#exportCFLAGES=‘-O2-mcpu=pentium4-march=pentium4-mmmx-msse-msse2’

可以根据你的CPU选择相应的参数GCC-3.1以上可針對CPU最佳化:

CODE:Pentium2:-O2-mcpu=i686-march=i686-mmmx
Pentium3:-O2-mcpu=pentium3-march=pentium3-mmmx-msse
Pentium4:-O2-mcpu=pentium4-march=pentium4-mmmx-msse-msse2#./configure--prefix=/usr/local/squid--enable-gnuregex--enable-async-io=80--enable-icmp--enable-kill-parent-hack--enable-snmp--disable-ident-lookups--enable-cahce-digests--enable-arp-acl--enable-err-language="Simplify_Chinese"--enable-default-err-languages="Simplify_Chinese"--enable-poll--enable-linux-netfilter--enable-underscore#make
#makeinstall

我个人安装软件都比较喜欢用源码包自己编译,觉得这样知道你自己在做什么,用rpm包好像不知道做什么的就安装好了。下面我们对各个编译参数进行解释,当然你可以通过./configure——help来查看其他的参数,以及各个参数的英文解释。

prefix=/usr/local/squid:指定软件的安装路径enable-gnuregex:由于Squid大量使用字符串处理做各种判断,加入此项能更好的处理。

enable-async-io=80:这个主要是设置async模式来运行squid,我的理解是设置用线程来运行squid,如果服务器配置很不错,有1G以上内存,cpu使用SMP的方式的话可以考虑设成160或者更高。如果服务器比较糟糕就根据实际情况设了。另外此项还另cache文件支持aufs。

enable-icmp:加入icmp支持。

enable-kill-parent-hack:关掉suqid的时候,要不要连同父进程一起关掉,这个当然要啦。

enable-snmp:此选项可以让MRTG使用SNMP协议对服务器的流量状态进行监测,因此必须选择此项,使Squid支持SNMP接口。

disable-ident-lookups:防止系统使用RFC931规定的身份识别方法。

enable-cahce-digests:加快请求时,检索缓存内容的速度。

enable-arp-acl:可以在规则设置中直接通过客户端的MAC地址进行管理,防止客户使用IP欺骗。

enable-err-language="Simplify_Chinese"和enable-default-err-languages="Simplify_Chinese":指定出错是显示的错误页面为简体中文

enable-poll:应启用Poll()函数而不是select()函数,通常而言poll(轮询)比select要好,但configure(脚本程序)已知Poll在某些平台下失效,若你认为你比configure编译配置脚本程序要聪明的话,可以用这个选项启用Poll。总之就是用这个可以提升性能就是啦。

enable-linux-netfilter:可以支持透明代理

enable-underscore:允许解析的URL中出现下划先,因为默认squid会认为带下划线的URL地址是非法的,并拒绝访问该地址。

这里我们就安装好了,接下来就是修改配置文件了。

2.修改定义配置参数

下面是我的squid.conf文件

CODE:#NETWORKOPTIONS(有关的网络选项)
#------------------------------------------------http_port3128#代理端口icp_port3130#icp端口
#OPTIONSWHICHAFFECTTHENEIGHBORSELECTIONALGORITHM(作用于邻居选择算法的有关选项)
#---------------------------------------------------#禁止缓存
hierarchy_stoplistcgi-bin?
hierarchy_stoplist-i^https:\\?
aclQUERYurlpath_regex-icgi-bin\?\.asp\.php\.jsp\.cgi
acldenysslurlpath_regex-i^https:\\
no_cachedenyQUERY
no_cachedenydenyssl
#上面几个就是说遇到URL中有包含cgi-bin和以https:\\开头的都不要缓存,
#还有asp、cgi、php等动态脚本也不要缓存,
#因为这些脚本通常都是动态更新的,这样数据不同步。
#还有https://开通的不缓存是因为一般我们进行电子商务交易,
#例如银行付款等都是采用这个的,如果把信用卡号什么缓存那不是很危险。

上一页[1][2]