Squid是一种源代码开放的高性能代理缓存服务器它可支持FTPgopher和Http数据对象的代理另外Squid也支持SSL多样化访问控制和代理请求的完整日志功能通过轻量级的网际缓存协议Squid以网状或层次的方式分配内存这样能节省额外的带宽提供Http服务加速代理Web服务器把Http数据推到Squid缓存中外界的请求访问可以通过缓存提取所需数据实现Web服务器的动态镜像
另外为了实现对Squid服务器的监控采用MRTGMRTG是Multi Router Traffic Grapher 的缩写它主要的用途是监测网络服务设备的流量并生成包括图片的HTML文件可以直观的显示网络服务的流量以提供Squid缓存服务的监测
通过Squid+MRTG可以配置一个完善的代理服务提供方案下面为具体配置步骤
一.基础准备
Squid下载地址
版本squidSTABLEsrctargz
MRTG下载地址~oetiker/webtools/mrtg/pub/
版本mrtgtargz
机器配置为M内存G硬盘(其中G分区专用缓存目录)PII
二.安装步骤
解压Squid(一般做法把软件包括在/opt目录下)
#tar zxvf squidSTABLEsrctargz
#cd squid
//进行编译
#/configure prefix=/usr/local/squid enabledelaypools enablesnmp enablecachedigests enableauthmodules=NCSA
#make all
#make install
*对编译项目的解释
prefix 为编译Squid所存放的目录这里为/usr/local/squid
enabledelaypools 此选项使能一个延时池这样能对某些特定的请求限制额定带宽
enablesnmp 此选项可以让MRTG使用SNMP协议对服务器的流量状态进行监测因此必须选择此项使Squid支持SNMP接口
enablecachedigests 使能缓存摘要本来此项目的是为了在Squid集群服务之间迅速发现缓存对象这里在本地使用可以加快请求时检索缓存内容的速度
enableauthmodules 此编译选项启用认证模块可以对访问代理用户进行授权
安装MRTG
#tar zxvf mrtgtargz
#cd mrtg*
#/configure prefix=/usr/local/mrtg
#make
#make install
/* 几点说明
.MRTG大部分程序是用Perl脚本写成需要Perl版本为以上才能运行RH 带有perl版本为v非常满足要求(如果版本不够请到下载安装)
.MRTG需要zlibgd和libpng三个处理图形的库支持RH满足此要求(如果没有安装请到下载安装)
三.具体配置
lSquid配置(仅对必要选项配置并说明)
http_port
此选项用于Squid代理所侦听的端口由于要实现Http加速代理则侦听端口
tcp_outgoing_address
此句法指定了远程服务器的IP地址这里我们使用来指定为所有地址
tcp_incoming_address
这里可以使用http_port语法进行绑定端口和IP地址表示客户端的请求可以不使用
cache_mem MB
由于Squid在读写磁盘I/O通道数据转贮等需要大量内存我们可以把内存值稍微设置大一些这样可以提供服务器性能
cache_swap_low
这用做表示缓存内部对象的替换的衡量基线当交换分区的磁盘利用率超越这个基线那么缓存对象替换也就随之开始这里是用百分率做衡量标准
cache_swap_high
此标记用于缓存对象替换的最高程度当交换分区磁盘利用率接近此设置则表示对象的更新程度更为剧烈这里由于我的缓存区设置比较大因此设置为%
下面几个配置标记采用系统默认配置
{ maximum_object_size KB
{ 超过此尺寸的对象将不缓存
{ minimum_object_size KB
{ 小于此尺寸的对象将不缓存
{ maximum_object_size_in_memory KB
{ 内存中能缓存的最大对象尺寸
{ ipcache_size
{ 指定IP缓存大小
{ ipcache_low
{ 缓存IP地址的最低基线
{ ipcache_high
{ 缓存IP地址的最高极限
{ fqdncache_size
{ 缓存DNS全域名解析的尺寸
cache_replacement_policy lru
此标记用于当缓存新对象时使用缓存策略来清除缓存中特定对象这里使用lru表示它只替换长时间没有被访问过的对象其他策略请参看配置文档介绍
memory_replacement_policy lru
此用法同上区别在于替换内存对象
cache_dir ufs /cache
设置缓存根目录为/cache类型为ufs缓存区大小为G可以有个二级子目录每有二级目录有个三级子目录
cache_access_log /var/log/squid/accesslog
cache_log /var/log/squid/cachelog
cache_store_log /var/log/squid/storelog
cache_swap_log /var/log/squid/swaplog
上面几项是缓存日志记录的路径和文件名
log_ip_on_direct on
记录客户端主机的IP地址
log_fqdn on
记录全DNS域名解析
mime_table /usr/local/squid/etc/nf
Squid所用mime的文件路径
pid_filename /usr/local/squid/logs/squidpid
Squid进程ID的文件
ftp_user
这里可以使用匿名登陆FTP服务器
ftp_list_width
FTP文件列表长度超过长度则截断文件名
ftp_passive on
允许主动连接FTP服务器
dns_nameservers
指定代理的域名解析服务器
authenticate_program /usr/local/squid/bin/ncsa_auth
/usr/local/squid/etc/passwd
代理认证程序这里在/usr/local/squid/etc使用htpasswd产生一个密码文件具体方法如下
#htpasswd –cdb passwd auth_usr pass
#htpasswd –db passwd auth_usr pass
#htpasswd –db passwd auth_usr pass
创建passwd文件并添加auth_usrauth_usrauth_usr三个认证用户
authenticate_children
所需要要产生的认证进程数
authenticate_ttl
此标记设置认证保持时间
authenticate_ip_ttl
此标记设置认证绑定IP地址的时间长度
authenticate_ip_ttl_is_strict on
此标记可在authenticate_ttl时间内拒绝其他非认证IP地址访问
request_header_max_size KB
request_body_max_size MB
设置了Http请求的包头和数据大小
request_body_max_size
这里请求所返回的数据大小为意义为没有任何限制
connect_timeout seconds
read_timeout minutes
request_timeout seconds
上面几项是代理服务几个超时设置这里使用配置文件默认值
下面是访问控制列表一些配置这里对访问的IP地址域名访问类型极其访问代理的权限做的限制
acl acldomain dstdomain
acl acceleratedport port
acl acceleratedhost dst /
acl aclprotocol proto HTTP FTP
acl aclmethod method GET POST
acl aclauth proxy_auth required
(注这里使用required表示任何passwd文件中存在的合法用户才授予访问权限)
acl aclsnmp snmp_community secrect
MRTG可以使用snmp协议检测此代理服务运行状态
acl aclconn maxconn
可并行连接的最大数量
启用定义的访问控制列表
http_access allow manager localhost
http_access deny manager
http_access allow aclauth
http_access allow acceleratedport acceleratedhost
http_access deny all
下面为缓存管理设置
cache_mgr
设置缓存管理者的接受邮件地址
cache_effective_user squidusr
cache_effective_group squidgrp
设置执行Squid的用户和用户组
{注设置用户和用户组及其权限修改方法如下
#groupadd squidgrp
#useradd –g squidgrp –d /home/squidusr squidusr
修改log日志权限属性使squidusr有写权限
#chown squidusr /var/log/squid
#chgrp squidgrp /var/log/squid
#chown squidusr /var/log/squid/*log
#chown squidgrp /var/log/squid/*log
}
下面配置Http服务加速代理
httpd_accel_port
httpd_accel_with_proxy on
(注如果配置代理和加速服务必须httpd_accel_with_proxy选项打开如果需要配置多个加速可以使用虚拟的概念)
snmp_port
此标记设置snmp_port端口为可以使MRTG监测服务运行状态
snmp_access allow aclsnmp localhost