分享
 
 
 

linux下利用Squid构建高速的Proxy Server1

王朝system·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

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

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

通常我们所说的高速缓存代理,就是以空间换时间,就如下图那样。

client通过Proxy Server上网的步骤如下:

①client端向Server发出请求。

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

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

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

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

二、使用Squid在构建Proxy Server

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

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

1.编译安装Squid

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

CODE:#groupadd squid

#useradd squid

添加suqid用户和用户组

CODE:#export CFLAGES=’-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

#make install

我个人安装软件都比较喜欢用源码包自己编译,觉得这样知道你自己在做什么,用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:# NETWORK OPTIONS(有关的网络选项)

# -----------------------------------------------------------------------------

http_port 3128 #代理端口

icp_port 3130 #icp端口

# OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM(作用于邻居选择算法的有关选项)

#-----------------------------------------------------------------------------

#禁止缓存

hierarchy_stoplist cgi-bin ?

hierarchy_stoplist -i ^https:\\ ?

acl QUERY urlpath_regex -i cgi-bin \? \.asp \.php \.jsp \.cgi

acl denyssl urlpath_regex -i ^https:\\

no_cache deny QUERY

no_cache deny denyssl

#上面几个就是说遇到URL中有包含cgi-bin和以https:\\开头的都不要缓存,

#还有asp、cgi、php等动态脚本也不要缓存,

#因为这些脚本通常都是动态更新的,这样数据不同步。

#还有https://开通的不缓存是因为一般我们进行电子商务交易,

#例如银行付款等都是采用这个的,如果把信用卡号什么缓存那不是很危险。

# OPTIONS WHICH AFFECT THE CACHE SIZE(定义cache大小的选项)

# -----------------------------------------------------------------------------

cache_mem 8 MB #额外使用内存量,可根据你的系统内存在设定,一般为实际内存的1/3

cache_swap_low 90 #最低缓存百分比

cache_swap_high 95 ##最高缓存百分比,就是上面那个额外内存的使用百分比

maximum_object_size 4096 KB #单个文件最大缓存大小,超过这个大小将不缓存

maximum_object_size_in_memory 8 KB #在内存中单个文件最大缓存大小,超过这个大小将不缓存到内存中

#有DNS正反解所得到的IP存在缓存区的大小,这样可以加快解析速度

ipcache_size 1024

ipcache_low 90

ipcache_high 95

fqdncache_size 1024

# LOGFILE PATHNAMES AND CACHE DIRECTORIES(定义日志文件的路径及cache的目录)

# -----------------------------------------------------------------------------

#<cache_dir>; <aufs|ufs>; <目录所在>; <MBytes大小>; <dir1>; <dir2>;

#那个 aufs 只有在编译的时候加入 --enable-async-io 那个选项才有支持,

#至于目录所在地与所占用的磁盘大小则请视您的主机情况而定,

#而后面 dir1, dir2 则是两个次目录的大小,通常 16 256 或 64 64 皆可,

#一般来说,数字最好是 16 的倍数,据说性能会比较好啦!

cache_dir aufs /Cache1 100 16 256

cache_dir aufs /Cache2 100 16 256

#日志存放位置

cache_access_log /usr/local/squid/var/logs/access.log

cache_log /usr/local/squid/var/logs/cache.log

# TAG: cache_store_log

cache_store_log /usr/local/squid/var/logs/store.log

# TAG: pid_filename

pid_filename /usr/local/squid/var/logs/squid.pid

# OPTIONS FOR EXTERNAL SUPPORT PROGRAMS(外部支持程序选项)

# -----------------------------------------------------------------------------

#用代理登陆匿名ftp服务选项

# TAG: ftp_user

ftp_user Squid@ #用户名

ftp_passive on #被动模式

#认证

#auth_param basic children 5

#auth_param basic realm Squid proxy-caching web server

#auth_param basic credentialsttl 2 hours

#auth_param basic casesensitive off

# OPTIONS FOR TUNING THE CACHE(调整cache的选项)

# -----------------------------------------------------------------------------

# TAG: refresh_pattern Cache更新时间设置

#<refresh_pattern>; <regex>; <最小时间>; <百分比>; <最大时间>;

refresh_pattern ^ftp: 1440 20% 10080

refresh_pattern ^gopher: 1440 0% 1440

refresh_pattern . 0 20% 4320

#上面第一行如果网址开头是 ftp 的话,那么在一天(1440分钟)后,

#如果proxy 再次取用这个档案时,则 cache 内的数据会被更新!

# TIMEOUTS (超时)

# -----------------------------------------------------------------------------

#连接到其他机器的最大尝试时间

connect_timeout 1 minute

#连接到上层代理的超时时间

peer_connect_timeout 30 seconds

#返回超时

request_timeout 2 minutes

#持续连接时间

persistent_request_timeout 1 minute

# ACCESS CONTROLS(访问控制)

# -----------------------------------------------------------------------------

# TAG: acl

#Examples:

#acl myexample dst_as 1241

#acl password proxy_auth REQUIRED

#acl fileupload req_mime_type -i ^multipart/form-data$

#acl javascript rep_mime_type -i ^application/x-javascript$

#

#Recommended minimum configuration:

acl all src 0.0.0.0/0.0.0.0

acl manager proto cache_object

acl localhost src 127.0.0.1/255.255.255.255

acl to_localhost dst 127.0.0.0/8

acl SSL_ports port 443 563

acl Safe_ports port 80 # http

acl Safe_ports port 21 # ftp

acl Safe_ports port 443 563 # https, snews

acl Safe_ports port 70 # gopher

acl Safe_ports port 210 # wais

acl Safe_ports port 1025-65535 # unregistered ports

acl Safe_ports port 280 # http-mgmt

acl Safe_ports port 488 # gss-http

acl Safe_ports port 591 # filemaker

acl Safe_ports port 777 # multiling http

acl CONNECT method CONNECT

acl inside src 192.168.1.0/24 #内部网IP段

acl localmac arp "/usr/local/squid/localmac" #mac地址文件

# TAG: http_access

http_access allow inside #允许inside规则通过

http_access allow localmac #允许localmac里面有登记的mac地址通过

#

#Recommended minimum configuration:

#

# Only allow cachemgr access from localhost

http_access allow manager localhost

http_access deny manager

# Deny requests to unknown ports

http_access deny !Safe_ports

# Deny CONNECT to other than SSL ports

http_access deny CONNECT !SSL_ports

#

#http_access deny to_localhost

#

# And finally deny all other access to this proxy

http_access deny all

# TAG: http_reply_access

http_reply_access allow all

# TAG: icp_access

#icp_access allow all

# TAG: cache_peer_access

# ADMINISTRATIVE PARAMETERS(管理参数)

# -----------------------------------------------------------------------------

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有