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

Linux服务器
linux下用cron定时执行任务的方法
.htaccess绑定域名到子目录的方法
linux apache下虚拟主机配置方法
apache 局域网访问配置方案
linux Apache服务器系统安全设置与优化
linux中mac地址绑定方法
linux托盘不断闪烁之解决方法
Apache配置 虚拟转向实例
Apache No space left on device的解决办法
Apache rewrite的重写相关的参数说明
LINUX入门级常用命令20条整理
Ubuntu设置开机自动挂载所有格式硬盘分区
5个可能被你忽略的Linux安全设置方法
学习Apache的mod rewrite、access写法
改版时保留原链接,创建新的URL的方法
rsync中文手册之使用rsync实现网站镜像和备份linux
rsync 数据同步使用详解
linux URL的301重定向代码分析
eclipse3.2.2 + MyEclipse5.5 + Tomcat5.5.27 配置数据库连接池
Apache服务器二级域名的完美实现

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 105 ::
收藏到网摘: 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]