代理服务器的功能可多的呢!在中大型的企业当中,可以藉由单点对外的 Proxy 主机来达到『节省频宽』的目的,同时,也可以透过这样的 Proxy 架构来达成『高阶防火墙』的设定,这里的『高阶』指的是 OSI 七层协议里面比较高阶段的层级,那就是应用与表现层方面的防火墙啦!那如果对于小型的企业呢?这个 Proxy 也可以达到分流的作用,让不同的目标网站可以透过不同的上层 Proxy 来取得数据!啊!真是很不错的一个服务器啊!不过,这个 Proxy 服务器也是几个常见的服务器里面,硬件要求相对比较高的一个咚咚!因为 Proxy 要求的是『快速』,所以呢,呵呵!当然硬件等级的要求是相当的『蛮像一回事』的!^_^ |
[root@test root]# rpm -ivh squidxxxxxxx |
[root@test
root]# wget \
http://ftp.nsysu.edu.tw/Unix/Proxy/squid/source/STABLE/squid-2.5.STABLE2.tar.gz |
0. 解压缩:
[root@test root]# cd /usr/local/src [root@test src]# tar -zxvf /root/squid-2.5.STABLE2.tar.gz # ....(略)....会产生一个 squid-2.5.STABLE2 的目录 [root@test src]# cd squid-2.5.STABLE2 1. 开始设定参数: [root@test squid-2.5.STABLE2]# export CFLAGES='-O2 -mcpu=i586' # 这是一个额外的参数啦!因为我们使用的是 Linux ,而我们的 GNU gcc # 有针对每种不同的 CPU 来进行套件的最佳化编译!所以啦,就加入我们的 # CPU 型号吧!因为我的 CPU 是 P-166 ,反正是个小案例啦!所以才会是 i586, # 您的 CPU 只要超过赛扬等级以上,就会是 i686 啰!此外,除了 # i386, i486, i586, i686 还有 pentium, pentium3, pentium4, athlon, # athlon-tbird, athlon-4, athlon-x, athlon-mp, k6, k6-2, k6-3 等等! # 如果不确定您的 CPU 那么就用 ix86 之类的方式来命名吧!不过,即使没有 # 写入这个参数也无所谓啦!至于那个 O2 是最佳化参数啦! [root@test squid-2.5.STABLE2]# ./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-err-language="Traditional_Chinese" \ > --enable-poll --enable-linux-netfilter # 这个咚咚就有趣啦!因为实在有相当多的参数可以使用,你可以使用 # ./configure --help 来察看可以使用的许多参数啊!稍微解释一下各个设定值: --prefix=/usr/local/squid:未来程序编译完成后放置的安装目录; --enable-gnuregex:使用 GNU 提供的正规表示法的原则来进行编译,请注意, 因为在 Proxy 未来的规划当中,很可能会动用到正规表示法的方式来 抵挡一些恶意的网站,所以这里应该要加入这个参数的! --enable-async-io=80:这个项目主要在控制一些输出入的组件,使用这个项目 可以让您的 Proxy 效能提升很多喔,因为是异步输出 (async) 的模式啊! 后面接的数值是可以变动的,如果您的网站配备很高档,可以尝试将这个数字 提升到 160 以上,如果是小网站的话,那么可以考虑将他降低至 40 左右。 --enable-icmp:要不要支援 ICMP 啊!当然是要的! --enbale-kill-parent-hack:在我关掉 squid 的时候,要不要连同 parent process 一起关掉,当然也是要的啦! --enable-snmp:这个与制图的 MRTG 比较有关啦!如果没有用到的话, 可以考虑将这个项目拿掉也没有关系! --enable-cache-digests:这个项目很重要的啦,我们在底下再进行说明。 --enable-err-language="Traditional_Chinese":不需要写了吧? 只要有任何的错误讯息,网页上面显示的语系会是中文喔! --enable-poll :可以提升效能; --enable-linux-netfilter:可以增加通透式 Proxy 的设定!后面再提啦! 2. 开始编译以及 Install 啰! [root@test root]# make && make install 3. 开始设定其它的相关参数 [root@test root]# vi /etc/man.config # 在这个档案当中新加入一行: MANPATH /usr/local/squid/man # 与 Squid 有关的 man page # 可以让 squid 提供的说明文件让 man 指令可以查到! |
[root@test
root]# cd /usr/local/squid/etc
[root@test root]# vi squid.conf # 1. 关于网络的参数设定部分 # 在这个部分当中,最重要的就是启用 squid 这个 daemon 的 port 了! # 在预设的情况下,公认的标准 proxy port 为 3128 ,至于被查询封包 # 观察的则是 3130 这个 port,这里我们分别启用这两个 port !如果您的 # Proxy 还有帮人家代理 https 这个由 SSL 协议启用的 port ,那么还需要 # 启动 https_port ,但是我们这里不谈论 SSL 啦!太危险了~ http_port 3128 icp_port 3130 # 2. 设定快取目录 ( Cache dir ) 的大小与记录档案所在的目录 # 这个设定是重要到爆的地方,一定得设定正确才行啊!上面我们不是 # 提过关于硬盘与目录吗?好了,现在这样假设:我有两块 partition , # 这两块 partition 分别挂载在 /usr/local/squid/var/cache1 # 以及 /usr/local/squid/var/cache2 这两个区域,此外,两块 # partition 一块为 1GB (cache1) 另一块为 2 GB (cache2) ,则设定为: # <cache_dir> <aufs|ufs> <目录所在> <MBytes大小> <dir1> <dir2> # 那个 aufs 只有在编译的时候加入 --enable-async-io 那个项目才有支持, # 至于目录所在地与所占用的磁盘大小则请视您的主机情况而定, # 而后面 dir1, dir2 则是两个次目录的大小,通常 16 256 或 64 64 皆可, # 一般来说,数字最好是 16 的倍数,据说效能会比较好啦! # 注意1: 下面两行需要『视您的主机环境而定!』不要照抄! # 注意2: 在底下的例子中,我的两块 partition 已经 mount 上该目录了! # 这也就是说,底下的两个目录是『已经存在的!』 cache_dir aufs /usr/local/squid/var/cache1 1000 16 256 cache_dir aufs /usr/local/squid/var/cache2 2000 16 256 # 底下则是关于记录文件的放置目录与文件名! cache_access_log /usr/local/squid/var/logs/access.log cache_log /usr/local/squid/var/logs/cache.log cache_store_log /usr/local/squid/var/logs/store.log pid_filename /usr/local/squid/var/logs/squid.pid # 3. 关闭认证机制 # 不晓得为什么,这一版的 squid 会自动的加入认证机制,请找到底下 # 几行,将他 mark 起来! #auth_param basic children 5 #auth_param basic realm Squid proxy-caching web server #auth_param basic credentialsttl 2 hours # 4. 提供 squid 服务 # 预设的情况下,仅有本机可以使用 squid ,我们先将所有的权限开放 # 然后在一个一个的关闭啰!先找到底下这一行: http_access deny all # 将他改成 http_access allow all # 5. 设定 squid 的拥有者与系统管理员信箱: # 就是刚刚我们上一小节提到的 squid 的拥有者,请注意,这个 # user 与 group 必需要在 /etc/passwd 及 /etc/group 里面存在方可成功! # 我这里以权限最小的 nobody, nogroup 来做为范例,您也可以自行设定! # 另外,cache_mgr 则是 squid 管理员的信箱,当 squid 发生问题时, # 屏幕上就会出现这个信箱给使用者联系管理员之用! cache_effective_user nobody cache_effective_group nogroup # 您也可以改成 nobody ! cache_mgr youraccount@your.e.mail # 6. 变更目录权限: # 在预设的情况下,我们主要的纪录信息都写入 /usr/local/squid/var 里面, # 所以这个时候需要将这个目录的权限改变成为 nobody 与 nogroup 所有! # 当然啰,如果您的 cache_dir 不在这个目录当中,那么还需要额外自行建立, # 例如我的 cache_dir 万一是在 /proxy1 与 /proxy2 时,那么我就必需要: # chown -R nobody:nogroup /proxy1 # chown -R nobody:nogroup /proxy2 # 关于权限的问题是很重要的!请不要忘记了! [root@test root]# chown -R nobody:nogroup /usr/local/squid/var # 7. 开始启动 squid: # 启动 squid 来试看看吧!不过,首先我们必需要建立快取目录的格式 # 才行,此外,由于我们想要以 nobody 来启动 squid ,所以你需要这样: [root@test root]# /usr/local/squid/sbin/squid -z # 建立 cache_dir [root@test root]# su nobody -c "/usr/local/squid/bin/RunCache &" # 8. 查看是否真的启动了 squid 了? [root@test root]# netstat -tln | grep 3128 tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN # 9. 重新读取设定档 squid.conf 的方法: [root@test root]# /usr/local/squid/sbin/squid -k reconfigure |
# 与内存有关的设定:因为我的系统很小,所以只给
8 MB!如果您的物理内存
# 很大的情况下,例如 512 MB,可以考虑加大到 64 或 128 MB。 cache_mem 8 MB # 与磁盘容量有关的设定(注:下列的 90 与 95 是百分比 ) # 如果您的 cache_dir 所在磁盘很大时,可以考虑将 4096 改成 32768 KB 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 |
<acl> <acl名称> <acl类型> <设定的内容> |
<cache_peer>
<主机名称> <类别> <http_port> <icp_port> <其它参数>
类别:主要有上层(parent) 与同一层 (sibling) 两种,我们这里主要介绍的是 上层 Proxy 也就是 parent 这一大类,如果您想要架设一个小型的 Proxy Cluster 的话,可以考虑组成 sibling 的功能,由于我们仅想要架设单部 Proxy Server ,所以这里我们就不探讨 sibling 了! http_port icp_port:就是我们最前面设定的啦! Internet 上面预设是 3128 3130 这两个! 其它参数:其它参数的部分就很重要了,主要有底下几个重要参数: proxy-only :只取出上层 Proxy 的 cache 给 client ,并不会将上层 Proxy 的数据存在自己的 cache 硬盘中; weight=n :权重的意思,因为我们可以指定多部上层 Proxy 主机,哪一部 最重要?就可以利用这个 weight 来设定, n 越大表示这部 Proxy 越重要! no-query :一般来说,如果要向 sibling 要求数据时,会向 sibling 送出 icp 的要求封包,使用 no-query 就可以取消。一般来说,如果向上层 Proxy 要求资料时,可以不需要发送 icp 封包,以降低主机的负担 default :表示该部主机为预设的 Proxy 主机的意思; no-netdb-exchange:表示不向附近的 Proxy 主机送出 imcp 的封包要求 no-digest :表示不向附近主机要求建立 digest 纪录表格。 范例: cache_peer gate.ncku.edu.tw parent 3128 3130 no-digest no-netdb-exchange cache_peer gate2.ncku.edu.tw parent 3128 3130 no-digest no-netdb-exchange cache_peer gate3.ncku.edu.tw parent 3128 3130 no-digest no-netdb-exchange cache_peer proxy.ncku.edu.tw parent 3128 3130 no-digest no-netdb-exchange |
0. 自己想要直接使用自己的
Proxy 捉取的资料
acl directip dst 140.116.44.0/24 acl directdn dstdomain .vbird.org tw.yaoo.com tw.news.yahoo.com 1. 成大附近的网域
|
# 主要的格式范例:
# <cache_peer_access> <上层 Proxy > <allow|deny> <acl名称> cache_peer_access gate.ncku.edu.tw allow comdn cache_peer_access gate.ncku.edu.tw deny !comdn cache_peer_access gate3.ncku.edu.tw allow netdn cache_peer_access gate3.ncku.edu.tw allow edudn cache_peer_access gate3.ncku.edu.tw deny !netdn cache_peer_access gate3.ncku.edu.tw deny !edudn cache_peer_access gate2.ncku.edu.tw deny comdn cache_peer_access gate2.ncku.edu.tw deny netdn cache_peer_access gate2.ncku.edu.tw deny edudn cache_peer_access gate2.ncku.edu.tw deny directdn cache_peer_access gate2.ncku.edu.tw deny directip cache_peer_access gate2.ncku.edu.tw deny twdn cache_peer_access gate2.ncku.edu.tw deny twip cache_peer_access gate2.ncku.edu.tw deny nckudn cache_peer_access gate2.ncku.edu.tw deny nckuip cache_peer_access proxy.ncku.edu.tw deny comdn cache_peer_access proxy.ncku.edu.tw deny netdn cache_peer_access proxy.ncku.edu.tw deny edudn cache_peer_access proxy.ncku.edu.tw deny directdn cache_peer_access proxy.ncku.edu.tw deny directip cache_peer_access proxy.ncku.edu.tw deny twdn cache_peer_access proxy.ncku.edu.tw deny twip cache_peer_access proxy.ncku.edu.tw deny nckudn cache_peer_access proxy.ncku.edu.tw deny nckuip |
hierarchy_stoplist
cgi-bin ?
acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY |
# 1. 关于 cache
的更新时间趋势
# 我们在快取当中的数据总是需要更新的对吧!那么如何设定更新的时间呢? # <refresh_pattern> <regex> <最小时间> <百分比> <最大时间> # 注意,那个 regex 指的是『目标』,这个『目标』大部分为网址,而这个网址 # 使用正规表示法来表示就是了!上面的意义是说:最小的时间内 (分钟),如果 # 档案有更动,就直接更新,或者是目标档案上次更新的时间到现在已经经过最大 # 时间的『百分比』时,就予以更新!范例如下: refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 # 第一行的意思是,如果网址裂开头是 ftp 的话,那么在一天(1440分钟)后,如果 # proxy 再次取用这个档案时,则 cache 内的数据会被更新! # 2. 关于联机时间限制
|
# 1. 使用 acl
先定义出要直接或者不要直接去的网址或 IP ,
# 这个部分我们刚刚在上面已经设定好了,就是 directip 与 directdn, # 还有 twdn 与 twip 这几个咚咚! # 2. 如果是直接要 Proxy 出去捉数据,可以使用 always_direct always_direct allow directip directdn # 3. 如果一定『拒绝经由上层
Proxy 出去』的话,可以使用 never_direct
# never_direct
allow 表示一定会经由上层 Proxy 来捉资料,
|
# 1. 先设定这个内部网域的
acl 名称
acl inside src 192.168.0.0/24 # 2. 设定 http_access 让他可以使用 http_access allow inside http_access deny all |
[root@test
root]# cd /usr/local/squid/etc
[root@test etc]# vi squid.allow.sh #!/bin/bash # 这支程序可以用来查寻您的 IP 喔! # 1. 请输入您的主机名称,请注意,如果有两个以上的主机名称,
# 2. 以下为程序段,看看就好了!
cat /dev/null
> $basedir/squid.allow.hosts.now
for host in
$hostnames
if [ "$runornot"
== "yes" ]; then
|
# 1. 先设定这个档案的名称吧!
acl allowhost src "/usr/local/squid/etc/squid.allow.hosts" # 2. 设定 http_access 让他可以使用 http_access allow allowhost http_access deny all |
[root @test
root]# vi /etc/crontab
10,30 * * * * root /usr/local/squid/etc/squid.allow.sh |
# 与 FTP 有关的设定项目,主要是针对被动式联机方式来设定喔!
ftp_user Squid@ ftp_passive on # 主要与 DNS
的设定值有关,如果在高负载的 Proxy 环境下,可以考虑将
|
鸟哥的范例:http://linux.vbird.org/linux_server/0420squid/0420squid_vbird_ex
成大 gate.ncku.edu.tw 的 squid.conf 设定:http://turtle.ee.ncku.edu.tw/~tung/proxy/squid.conf.ncku
电机系 turtle.ee.ncku.edu.tw 的 squid.conf 设定:http://turtle.ee.ncku.edu.tw/~tung/proxy/squid.conf.turtle
台南学校范例 proxy.school.tn.edu.tw 的 squid.conf 设定:http://turtle.ee.ncku.edu.tw/~tung/proxy/squid.conf.school.tn
1. 确认一下到底有没有我们需要的一些相关套件?
[root@test root]# rpm -qa | egrep '(^gd-|^zlib-|^libpng-)' libpng-devel-1.0.14-0.7x.4 gd-1.8.4-4 zlib-1.1.3-25.7 zlib-devel-1.1.3-25.7 libpng-1.0.14-0.7x.4 gd-devel-1.8.4-4 # 请注意,我是以 Red Hat 7.2 为例,如果您的系统并非 RH 7.2 ,那么可能 # 套件后面接的版本会不太一样,不过,至少都需要有上面的几样套件就是了! # 就是 gd, zlib, libpng 这三个套件啦!有的 distribution 还会有 xxx-devel # 之类的名称,那个也需要安装喔!如果发现没有安装的话,请拿出您的原版光盘片, # 将他 mount 上之后,好好的将他搜寻一下,并且安装上去吧!很重要,一定要 # 安装这些套件之后,底下的动作才会成功呢! 2. 开始安装 fly 这支程序 [root@test root]# cd /usr/local/src [root@test src]# tar -zxvf /root/fly-2.0.0.tar.gz # ....会产生一个 fly-2.0.0 的目录 [root@test src]# cd fly-2.0.0 [root@test fly-2.0.0]# make 注: # ....如果没有出现底下的字样那么就是成功了! /usr/bin/ld: cannot find -lttf (或者是 ljpeng ...) collect2: ld returned 1 exit status make: *** [fly] Error 1 # 如果是出现 warning 的话,还不打紧,因为仅只是警告而已,所以问题不大, # 但是如果出现上面的字样时,就会连带出现第三行的 Error ,那就是编译失败了 # 果真如此的话,请先寻找一下,以上面为例,找不到 lttf ,而 lttf 其实 # 就是 libttf 檔名啦!(所以 ljpeg 就是 libjpeg )所以给他下达: loate libttf /usr/lib/libttf.so.2 # 嗯!找到了!其实是 libttf.so.2 啦!如果你的系统跟我的不同,有可能档名 # 会不一样,所以请依照你的屏幕显示的讯息来下达指令喔!但是这个编译程序 # 有点笨,不认识这个档案,所以我们要欺骗他一下,就是下达: ln -s /usr/lib/libttf.so.2 /usr/lib/libttf.so # 这样就可以啦!如果还有找不到的档案,同样的方式给他连结一下即可!然后 # 再次的给他执行一次 make 即可!最后会产生一个档名为 fly 的执行档, # 如果没有产生执行档,那就是有问题啦!请赶紧再回头去查一查是否有某些 # 套件没有安装,或者没有依照上面的方式建立连结档案! [root@test fly-2.0.0]# cp fly /usr/local/bin 我们先将 fly 这支程序给他复制到 /usr/local/bin 这个目录去,可以直接使用 这样就 OK 了! 3. 开始安装 pwebstats 套件 [root@test root]# cd /usr/local/src [root@test src]# tar -zxvf /root/pwebstats-1.3.8.tar.gz # 此时会产生 /usr/local/src/pwebstats-1.3.8 这个目录,这目录里面 # 已经是可以执行的资料了,不需要进行任何的编译,所以我们将他直接移动到 # /usr/local/ 里面去! [root@test src]# mv pwebstats-1.3.8 /usr/local/pwebstats [root@test src]# cd /usr/local/pwebstats [root@test pwebstats]# vi pwebstats <==这个是主要的执行档! # 由于我们的 perl 这个程序语言的执行档是放置在 /usr/bin/perl ,但是 # 这支程序预设是书写为: #!/usr/local/bin/perl # 将上面改写为 #!/usr/bin/perl # 这样就可以了!继续下一步! 4. 开始设定 squid 的输出输入参数: 前提要件: a. 我的 WWW 主页目录在 /var/www/html b. 我的 pwebstats 整个数据库放置在 /usr/local/pwebstats c. 我的 squid 登录档放置在 /usr/local/squid/var/logs/access.log.0 d. 我的 squid 的执行档为 /usr/local/squid/sbin/squid e. 我的 pwebstats 输出的数据放置在 /var/www/html/pwebstats f. 我的 fly 是放在 /usr/local/bin/fly [root@test pwebstats]# mkdir /var/www/html/pwebstats<=请依您的主机而定 [root@test pwebstats]# cd /usr/local/pwebstats/conf [root@test conf]# vi squid-proxy.conf <==这个就是主要的设定档! # 底下请填写你的主机的『昵称』! server:My_Proxy_Server # 这个是显示在网页上面的标题内容! Server_header:我的代理服务器 # squid 登录档放置的完整档名 logfile:/usr/local/squid/var/logs/access.log.0 # 我们使用的就是 squid 的登录档啊!所以这里不需改变 logtype:squid # 刚刚提到的,网页数据要输出到底下的目录 outdir:/var/www/html/pwebstats # 一些图像档案的预设目录,这里我们使用 pwebstats 提供的目录! templates:/usr/local/pwebstats/templates # 嗯!我们就天天来进行一次吧!可以用 weekly 或 daily interval:daily # 是否在执行的过程中给他输出讯息呢?好吧! verbose:true # fly 放置的目录,刚刚我们移动的目录啊! fly_prog:/usr/local/bin/fly # 本机端的要求,这里可以不用设定喔! local_patt: # 列出几部 client 计算机?我给他来个 50 部好了! host_threshold:50 # 列出几部 Server (被要求资料者),还是给个 100 部吧! remote_host_threshold:100 # 统计的次数,给他 100 次好了! item_threshold:100 # 做多少个 domain 的分析?给他 15 个就够多了! domain_threshold:15 # 底下保留默认值即可! (最后面的 dns 反查可以启动!) exclude_reqs:true #complete_exclude_host: #complete_exclude_url_patt: #complete_exclude_user: dns_lookup:true # 事实上,只要上面粗体字的地方写对就好了!其它的保留默认值即可! 5. 测试执行一次看看: [root@test conf]# /usr/local/squid/sbin/squid -k rotate 上面这个动作会将 squid 的登录档进行 logrotate 的动作喔!就会更新了 /usr/local/squid/var/logs/access.log.0 这个档案啦! [root@test conf]# /usr/local/pwebstats/pwebstats -c \ > /usr/local/pwebstats/conf/squid-proxy.conf .....(略)...... -- Reading in log file /usr/local/squid/var/logs/access.log.0: The logfile has 27 entries. Processing... 0% 50% 100% |-----------------------|------------------------| ################################################## Finished. .....(略)...... 呵呵!这样就是成功啦!!!! 6. 将每天执行的指令写成 scripts 吧! # 我将他写在/usr/local/pwebstats/pwebstats.sh 这个档案当中喔! [root@test conf]# vi /usr/local/pwebstats/pwebstats.sh #!/bin/bash /usr/local/squid/sbin/squid -k rotate sync; sleep 5s /usr/local/pwebstats/pwebstats -c /usr/local/pwebstats/conf/squid-proxy.conf [root@test conf]# chmod 755 /usr/local/pwebstats/pwebstats.sh [root@test conf]# vi /etc/crontab # 加入底下这一行吧! 59 2 * * * root /usr/local/pwebstats/pwebstats.sh >/dev/null 2>&1 |
# 1. 解压缩:
[root@test root]# cd /usr/local/src [root@test src]# tar -zxvf /root/sarg-1.4.taiwan_big5.tar.gz ....(略)..... 这个时候会产生一个名为 sarg-1.4 的目录出来! # 2. 设定、编译与安装 [root@test src]# cd sarg-1.4 [root@test sarg-1.4]# mkdir /usr/local/sarg [root@test sarg-1.4]# ./configure --prefix=/usr/local/sarg \ > --enable-mandir=/usr/local/sarg/man1 \ > --enable-bindir=/usr/local/sarg/bin \ > && make && make install 这样可以快速的设定、编译与安装,一次完成! 安装的数据当中: a. 设定档 /usr/local/sarg/sarg.conf b. 执行档 /usr/local/sarg/bin/sarg c. 说明档 /usr/local/sarg/man1/sarg.1 # 3. 额外设定 ( 说明文件的路径 ) [root@test root]# vi /etc/man.config (有时为 man.conf 檔名不同!) 新增加这一行 MANPATH /usr/local/sarg |
[root@test
root]# mkdir /var/www/html/sarg
[root@test root]# vi /usr/local/sarg/sarg.conf # 这个档案是 sarg 的设定档,里面已经将整个设定参数讲的很清楚了, # 你可以依照你的情况来调整这个档案的参数,无论如何,这个档案里面 # 应该至少要有底下这几个数据,其它的请自行使用喔! language Taiwan_big5 access_log /usr/local/squid/var/logs/access.log.0 title "Squid 使用状态报告" temporary_dir /tmp output_dir /var/www/html/sarg overwrite_report no mail_utility /bin/mail topsites_num 100 exclude_codes /usr/local/sarg/exclude_codes max_elapsed 28800000 charset big5 [root@test root]# /usr/local/sarg/bin/sarg SARG: 制作报告完成于 /var/www/html/sarg/2003Apr10-2003Apr11 |
1. 建立这支程序:
我将他取名为 /usr/local/squid/etc/squid.logrotate
[root@test root]# vi /usr/local/squid/etc/squid.logrotate #!/bin/bash # 这支程序是要写来做为 squid 的 log files analysis 之用的! # 执行的方法为 crontab 啰! # vi /etc/crontab 加入底下这一行: # 59 23 * * * root /usr/local/squid/etc/squid.logrotate # 1. parameters settings PATH=/sbin:/bin:/usr/sbin:/usr/bin # 2. stoping and rotating squid sleep 50s /usr/local/squid/sbin/squid -k rotate /usr/local/squid/sbin/squid -k shutdown # 3. pwebstats processing /var/www/html/pwebstats/pwebstats -c \ /var/www/html/pwebstats/conf/squid-proxy.conf \ > /dev/null 2>&1 # 4. sarg processing /usr/local/sarg/bin/sarg > /dev/null 2>&1 # 5. starting squid sleep 11s su nobody -c "/usr/local/squid/bin/RunCache &" > /dev/null 2>&1 # 2. 改变档案权限与加入 crontab 排程当中! [root@test root]# chmod 744 /usr/local/squid/etc/squid.logrotate [root@test root]# vi /etc/crontab 加入这一行: 59 23 * * * root /usr/local/squid/etc/squid.logrotate |
[root@test
root]# vi /usr/local/squid/etc/squid.conf
# 这里请填入你的 Proxy 主机名称 与 port ! httpd_accel_host vbird.adsldns.org # 因为我们是要进行 WWW 的数据快取,所以 port 当然就是 80 啰! httpd_accel_port 80 # 这个很重要!因为设定 httpd_accel_host 之后, cache 的设定会自动被终止, # 必须要加上这个设定为 on 之后,才能提供 cache 的功能! httpd_access_with_proxy on httpd_accel_uses_host_header on [root@test root]# /usr/local/squid/sbin/squid -k reconfigure |
iptables -t
nat -A PREROUTING -i eth0 -p tcp -s 192.168.0.0/24 \
--dport 80 -j REDIRECT --to-ports 3128 |
1. 停止 squid
[root@test root]# kill -9 `cat /usr/local/squid/var/logs/squid.pid` (可能会重复做 5 次左右才会完全砍掉!) 2. 删除暂存目录
(这个目录请依您的系统而定!)
3. 重建快取目录并重新启动
|