Linux 配置squid服务

【什么是squid】

Squid是比较知名的代理软件,它不仅可以跑在linux 上还可以跑在windows以及Unix
上,它的技术已经非常成熟。目前使用Squid的用户也是十分广泛的。Squid与Linux下其它
的代理软件如Apache、Socks、TISFWTK和delegate相比,下载安装简单,配置简单灵活,
支持缓存和多种协议。
Squid的缓存功能相当好用,不仅可以减少带宽的占用,同样也大大降低了后台的WEB
服务器的磁盘I/O的压力。Squid接收用户的下载申请,并自动处理所下载的数据。也就是
说,当一个用户象要下载一个主页时,它向Squid发出一个申请,要Squid替它下载,然后
Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用
户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。
Squid将数据元缓存在内存中,同时也缓存DNS查寻的结果,除此之外,它还支持非模
块化的DNS查询,对失败的请求进行消极缓存。Squid支持SSL,支持访问控制。由于使用
了ICP,Squid能够实现重叠的代理阵列,从而最大限度的节约带宽。
Squid对硬件的要求是内存一定要大,不应小于128M,硬盘转速越快越好,最好使用
服务器专用SCSI 硬盘,处理器要求不高,400MH以上既可。

【安装squid】

wget http://syslab.comsenz.com/downloads/linux/squid-2.7.STABLE9.tar.gz

tar zxvf squid-2.7.STABLE9.tar.gz

cd squid-2.7.STABLE9

ulimit -HSn 65535

/usr/sbin/useradd squid

编译参数

./configure --prefix=/usr/local/squid \
--disable-dependency-tracking \
--enable-dlmalloc \
--enable-gnuregex \
--disable-carp \
--enable-async-io=240 \
--with-pthreads \
--enable-storeio=ufs,aufs,diskd,null \
--disable-wccp \
--disable-wccpv2 \
--enable-kill-parent-hack \
--enable-cachemgr-hostname=localhost \
--enable-default-err-language=Simplify_Chinese \
--with-build-environment=POSIX_V6_ILP32_OFFBIG \
--with-maxfd=65535 \
--with-aio \
--disable-poll \
--enable-epoll \
--enable-linux-netfilter \
--enable-large-cache-files \
--disable-ident-lookups \
--enable-default-hostsfile=/etc/hosts \
--with-dl \
--with-large-files \
--enable-removal-policies=heap,lru \
--enable-delay-pools \
--enable-snmp \
--disable-internal-dns


make && make install
关于squid的版本,有必要提一下,目前squid最新版本已经到了3.1了,但是笔者认为2.6
版本比较好用,如果你有兴趣可以研究一下3.1。

【squid配置】
编辑配置文件/usr/local/squid/etc/squid.conf
把原来配置文件删除,替换成:
http_port80transparent

 

cache_replacement_policylru #如果有多个(下面两行)缓存目录,则需要写这个参数
cache_diraufs /cache1819216256 #缓存目录1/cache1 大小为8G
cache_diraufs/cache2409616256 #缓存目录2/cache2 大小为4G
##上面两行定义了缓存目录,这个缓存目录可以只有一个,也可以定义很多个。
cache_mem2048MB #分配多少内存给squid,建议留至少512M给系统,如果你是虚拟机
内存很小,只作为试验用的话,那就分一半内存给squid
maximum_object_size2048KB #缓存的文件最大不能超过2M
maximum_object_size_in_memory512KB#缓存在内存中的文件最大不超过512k
visible_hostnamecache.example.com #显示给用户的主机名
client_persistent_connectionsoff #client端关闭长连接
server_persistent_connectionson #server端打开长连接
memory_poolson
memory_pools_limit1024MB
forwarded_foron
log_icp_queriesoff
cache_mgr [email protected] #定义管理员的mail为[email protected]
viaon
httpd_suppress_version_stringoff
cache_effective_usersquid #定义以squid用户的身份运行squid
cache_effective_groupsquid
error_directory/usr/local/squid/share/errors/Simplify_Chinese
icon_directory/usr/local/squid/share/icons
mime_table/usr/local/squid/etc/mime.conf
ie_refreshoff
tcp_recv_bufsize32KB
aclallsrc0.0.0.0/0.0.0.0
acllocalhostsrc127.0.0.0/8
aclMgr_ipsrc127.0.0.0/8
aclallow_ipdst127.0.0.0/8192.168.0.0/16 #定义允许代理的web的IP或者IP段
aclPURGEmethodPURGE
aclSafe_portsport808080
aclCONNECTmethodCONNECT
aclmanagerprotocache_object
aclHTTPprotoHTTP
http_accessallowallow_ip
http_accessallowmanagerMgr_ip
http_accessdenymanager
http_accessdenyPURGE
http_accessdeny!Safe_ports
http_accessdenyall
icp_accessdenyall
ipcache_size1024
ipcache_low90
ipcache_high95
memory_replacement_policylru
hosts_file/etc/hosts
request_header_max_size128KB
hierarchy_stoplistcgi-bin?\.php\.html
aclQUERYurlpath_regexcgi-bin\?\.php\.html
cachedenyQUERY
quick_abort_min-1KB
quick_abort_max32KB
quick_abort_pct95
#errorpage
#error_maphttp://www.discuz.net/error/404.html403
#deny_infohttp://www.discuz.net/aaa.htmlcctv_Domain
#timeout
peer_connect_timeout20seconds
connect_timeout20seconds
read_timeout60seconds
request_timeout20seconds
pconn_timeout20seconds
shutdown_lifetime5seconds
strip_query_termsoff
icp_port0
#logfile
emulate_httpd_logon
logformat combined %>a%ui%un[%tl] "%rm %ruHTTP/%rv"%Hs%h"
"%{User-Agent}>h"%Ss:%Sh
#access_log/log/squid-log/access.logcombined
cache_store_log/dev/null
cache_log/var/log/squid/cache.log
logfile_rotate12
#MISCELLANEOUS
store_objects_per_bucket15
client_dboff
修改完配置文件后保存,然后初始化squid
mkdir/cache1 /cache2/var/log/squid
chown-Rsquid:squid/cache1/cache2/var/log/squid
/usr/local/squid/sbin/squid -z
#用来生成cache目录,如果你的配置文件配置出错,往往会在初始化的时候报错,错误信
息会直接显示在屏幕上。初始化成功后,就可以启动squid了,启动命令为:
nohup/usr/local/squid/bin/RunCache&
启动后,可以去看看cache.log 在这个日志中,你可以看到很多关于squid的信息,当然也
包括一些错误日志。
如果想开机启动则需要在/etc/rc.d/rc.local中最后加入一行
/usr/local/bin/RunCache&
到这里算是配置完成了,但是还有一个问题,就是如何定义被代理的web以及域名?单单
看配置文件并没有说代理的web是哪一个。确实,这个配置文件其实可以代理多台web,
只要你在/etc/hosts中定义要代理的域名以及IP即可,hosts格式在前面已经介绍过。笔者
要提醒你的是,如果是一台web上的多个域名,请不要写一行,虽然hosts是允许的,但是
如果写成一个IP对应多个域名,squid代理时就会出错。所以有几个域名就要写几行。更改
/etc/hosts后要重启squid才能生效:
/usr/local/squid/sbin/squid -krec
在重启前可以先检测一下,是否有错,命令为:
/usr/local/squid/sbin/squid–kcheck
如果没有错,则不会显示任何信息,否则会显示一些信息出来。
另外希望你也要学一下其他几篇关于squid的文章:
squid优化及配置参数
squid配置详解
squid防盗链的设置

你可能感兴趣的:(Linux 配置squid服务)