发信人: SunGang()
整理人: zhcharles(2001-06-17 20:00:39), 站内信件
|
Squid -- Linux & FreeBSD下的一个优秀代理服务器软件使用详解 (摘自http://netschool.cpcw.com/linux/41.htm)(文/闫建勇) 笨刚编辑整理
做为眼下最流行的操作系统,Linux已经越来越受到世人的关注。虽然目前Linux 的软件还不是很丰富,替代WINDOWS作为普通PC机操作系统还为时过早,但是在服务器 领域,Linux的稳定性,可操作性决不输于任何操作系统,并且也有优秀的软件支持。 Squid就是其中之一。Linux加Squid的组合做为代理服务器,性能远远超过WINNT加 MSPROXY2.0(个人观点),为几百人的小型局域网代理绰绰有余。下面,我就详细的介 绍Squid的安装及使用技巧,希望大家能够喜欢上它。
1.Squid简介
Squid是一个缓存internet数据的一个软件,它接收用户的下载申请,并自动处理 所下载的数据。也就是说,当一个用户象要下载一个主页时,它向Squid发出一个申请, 要Squid替它下载,然后Squid连接所申请网站并请求该主页,接着把该主页传给用户 同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户, 使用户觉得速度相当快。目前,Squid 可以代理HTTP, FTP, GOPHER, SSL 和 WAIS 协 议,暂不能代理POP, NNTP等协议。不过,已经有人开始修改Squid,相信不久的将来, Squid能够代理这些协议。
Squid能够缓存任何数据吗?不是的。象缓存信用卡帐号、可以远方执行的scripts、 经常变换的主页等是不合适的也是不安全的。Squid可以自动的进行处理,你也可以根 据自己的需要设置Squid,使之过滤掉你不想要的东西。
Squid可以工作在很多的操作系统中,如AIX, Digital Unix, FreeBSD, HP-UX, Irix, Linux, NetBSD, Nextstep, SCO, Solaris,OS/2等,也有不少人在其他操作 系统中重新编译过Squid。
Squid对硬件的要求是内存一定要大,不应小于128M,硬盘转速越快越好,最好使 用服务器专用SCSI硬盘,处理器要求不高,400MH以上既可。
2. Squid的编译和运行
其实现在的Linux发行套件中基本都有已经编译好的Squid,你所作的就是安装它既 可。如果你手头没有现成的编译好的Squid或想使用最新的版本,去ftp:squid.nlanr.net 下载一份,自己编译。
Squid的编译是非常简单的,因为它基本上是自己配置自己。最容易出现的问题是你 的系统上没有合适的编译器,这可以通过安装相应的编译器解决。如果出现其他问题,你 可以问一下有经验的用户或到相应的邮件列表寻找帮助。
编译Squid之前,最好建一个专门运行Squid的用户和组。我就在自己的服务器上建 了一个名为squid的用户和组,用户目录设为/usr/local/squid。然后su为用户squid并 从squid.nlanr.net下载Squid的源文件到目录 /usr/local/squid/src中,用如下命令 进行解压:
%tar xzf squid-2.0.RELEASE-src.tar.gz
%cd /usr/local/squid/src/ squid-*.*.RELEASE /
%./configure
%make
%make install
第一个命令在目录/usr/local/squid/src中产生一个新的子目录 /squid-*.*.RELEASE/。命令./configure会自动查询你的系统配置情况以及你系统中使 用的头文件。不加参数的./configure会把Squid安装在目录/usr/local/squid中,如果 你想使用其他目录,用如下命令./configure --prefix=/some/other/directory,这会 把Squid安装在目录/some/other/directory中。make命令编译Squid,make install命 令安装Squid。
不出意外的话,目录/usr/local/squid中会出现如下目录:
/bin
/cache
/etc
/logs/
/src (自己创建的)
目录/bin中含有Squid可执行程序,包括Squid本身,ftpget等。
目录/cache包含Squid缓存的数据,其中包含象/00/ /01/ /02/ 以及/03/这样的目 录,这些目录中还有子目录,因为目录多了比在一个目录成千上万的文件中寻找一个文 件更容易,速度更快。
目录/etc中包含Squid的唯一的配置文件squid.conf。
目录/logs中包含Squid的日志。
3. squid.conf文件的配置
在安装Squid后,在目录/usr/local/squid /etc中会自动产生一个样本squid.conf 文件,文件中对每一个选项都有详细的说明,用户可以通过修改该文件以满足不同的需 要。
总的来说,有如下几个重要选项:
·http_port:设定Squid监听的端口,你最好设一个比较好记的端口号,以便在进行 客户机配置时容易记住。我的机器上端口号设的是8080。缺省为3128。
·cache_mem:设定Squid占用的物理内存,根据我的经验,cache_mem的大小不应超 过你的服务器物理内存的三分之一,否则将会影响机器的总体性能。
·maximum_object_size:设定Squid可以接收的最大对象的大小。Squid缺省值为 4M,我自己入认为太大,你可以根据自己的需要进行设定。
·cache_dir:设定缓存的位置、大小。一般看起来形式如下“cache_dir /usr/local/squid/cache 100 16 256”。 /usr/local/squid/cache代表缓存的位置; 100代表缓存最大为100M;16和256代表一级和二级目录数。
·cache_effective_user:设定使用缓存的有效用户。缺省为用户nobody,如果你的 系统中没有用户nobody,最好建一个或以非root用户运行Squid。
下面我给出一个最简单的squid.conf文件:(笨刚已加入用户认证及ip限制功能,用 户可以对照原始squid.conf加以修改。)
#squid.conf - a very basic config file for squid
#Turn logging to it's lowest level
debug_options ALL,1
#defines a group (or Access Control List) that includes all IP addresses #把你需要允许使用proxy的ip范围写在这里,用空格分隔 #acl all src 0.0.0.0/0.0.0.0 acl all src 202.96.130.0/255.255.255.0 202.96.190.96/255.255.255.224 acl manager proto cache_object acl userlist proxy_auth REQUIRED acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 80 21 81 82 88 443 563 70 210 1025-65535 acl CONNECT method CONNECT
#define RAM used
cache_mem 32M
#defines the cache size
cache_dir /usr/local/squid/cache 100 16 256
#allow all sites to use connect to us via HTTP http_access allow manager all localhost userlist http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access deny !userlist http_access deny !all
#allow all sites to use us as a sibling
icp_access allow all
#test the following sites to check that we are connected
dns_testnames internic.net usc.edu cs.colorado.edu mit.edu yale.edu
#run as the nobody user
cache_effective_user nobody nogroup #这里加入用户认证功能。 # If you want to use the traditional proxy authentication, # jump over to the ../auth_modules/NCSA directory and # type: # % make # % make install proxy_auth_realm Welcome to BenGang's Proxy!!! @_@ authenticate_program /usr/local/sbin/ncsa_auth /usr/local/etc/squid/passwd #/usr/local/etc/squid/passdw 文件用apache里带的htpasswd程序来建立。 #htpasswd -c passwd #htpasswd passwd 用户名,将会提示你输入密码。 http_port 8384
这个配置文件允许给定ip范围内的授权用户使用Squid,创建了100M缓存,使用32M内 存,在缺省位置"/usr/local/squid/cache"缓存数据,所有缓存数据以组nogroup和用户 nobody身份保存,端口为8384。
4. 运行Squid
首先以root身份登陆。运行如下命令: #mkdir /usr/local/squid/cache #mkdir /usr/local/squid/logs #chown nobody.nogroup cache logs #/usr/local/squid/bin/squid -z
该命令会产生Squid所有的缓存目录。
如果你想前台执行Squid,接着执行命令:
%/usr/local/squid/bin/squid -NCd1
该命令正式启动Squid。如果一切正常,你会看到一行输出
Ready to serve requests.
如果想后台运行Squid,把它做为一个精灵进程,执行命令:
%/usr/local/squid/bin/RunCache&
观察Squid是否运行使用命令:
% squid -k check
输出会告诉你Squid的当前状态。 让squid.conf的修改生效 % squid -k reconfigure
好了,文章先写到这里,其实这里介绍的都是最基本的东西,Squid有好多高级 的功能,如做WEB服务器的高速缓存,做二级代理服务器,做为防火墙,以及怎样设 定过滤规则等,这里就不详述了。
--
笨笨的憨头 _________________________________ # whois [email protected] # finger [email protected] 祝你在cntomi每天都快乐http://www.cntomi.com嘻嘻ttp://sungang.cntomi.com/※ 来源:.网易 BBS bbs.netease.com.[FROM: 202.103.134.136]
|
|