1关于Squid
Squid是一款非常通用的、开源的(GNUGPL)Web缓存代理软件。支持HTTP、HTTPS和FTP协议。Squid主要支持类Unix操作系统。针对Windows系统,最早有人利用Cygwin重编译Squid源码,然后在windows平台搭建代理服务,现在,squid官方网站早已推出Windows平台的squid可执行版本。我搭建代理服务器使用的是Squid2.7 for Windows(Squid3.0 for Windows属于开版本,不能保证运行稳定)。经过测试,运行非常稳定,完全能够满足中小规模代理设定。
Squid官网 http://www.squid-cache.org/
Squidfor Windows下载页 http://squid.acmeconsulting.it/
Squid可以用来做正向代理和反向代理。其中,反向代理是指搭建在Server端、位于应用服务器之前的代理。用来对Web服务的静态的或不经常改变的内容进行缓存,以加快服务响应时间。
正向代理就是我们常说的代理,介于Client与原始web服务器之间,通常是用户自主选择的代理。
本文主要介绍利用Squid在Windows系统下搭建正向代理。我是在一台美国服务器上搭建的代理,为了正常使用Google服务。
2目录介绍
下载binary版,解压后有一下几个主要目录:
docs:主要squid命令行参数说明、release版本信息,新功能说明等。
etc:包含squid配制参数文件,最核心的配置文件是squid.conf.default代理服务的众多功能都在该文件中指定
libexec:可执行的辅助程序库,详细功能可以从官方文档获取。
sbin:包含可执行程序squid.exe用于启动、配制、停止squid服务
var:默认的日志文件和cache文件存储位置
3基本安装和启动
安装非常简单:
(1)解压缩zip包,将squid文件夹放到C盘根目录(至于为何推荐放在C盘根目录,下面会有解释)
(2)然后将squid/etc目录下的squid.conf.default和mime.conf.default拷贝粘贴并重命名为squid.conf和mime.conf
(3)在命令行窗口进入到squid/sbin目录,执行squid即可启动squid
4 Squid常用参数配置和服务注册
虽然前述步骤能够启动Squid,而且使用default端口3128也能连接到squid服务器,但是默认配置情况下squid会deny所有的代理请求。所以必须要对squid.conf进行配置。
(1)ACL访问控制设置
打开squid.conf文件,用查找功能搜索文本“# TAG: http_access”,从该行开始往直到下一个“# TAG:”为止是squid的accesscontrol配置区域。
通常使用acl[acl Name] [type] [value[value...]]来定义访问列表,type指定访问列表类型,最常用的类型为src用来指定源ip地址或ip地址段。
本人的访问列表定义了如下一个acl用来允许内网一个网段内的用户访问:
acl internalip src 192.125.26.0-192.125.28.255.
然后用
http_accessallow internalip
允许该acl指定的ip段访问squid代理。
squid的访问控制的设置时有顺序的,你不能简单地将自己的配置数据添加到配置文件的尾部,需要在配置文件中的“http_accessdeny all”之前配置允许访问列表。可以在该文件中查找文本“#INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS”在该行之后添加自己的acl和http_access项目。
除了前面的src类型外,acl可以指定的类型还有好多,如srcdomain(目标域名),arp(mac地址)等。推荐大家尽量不要用域名来设置访问列表,这会牵扯到域名解析,影响squid的启动速度,而且好多情况下,squid只会在启动时候做解析域名操作,如果在squid启动后域名所对应IP发生变化,代理不会做出反应。
此外,除了可以用acl控制使用代理服务的客户端外,还可以对要访问的目标Web服务进行访问控制,具体配置说明可以在squid.conf文件的acl配置部分查看(搜索“# TAG: acl”)。
(2)代理服务器端口设置
Squid通过http_port指定代理服务器监听的端口,默认值是3128。具体配置的时候可以根据情况自行指定
(3)缓存位置设置
因为我们默认经squid部署在c盘,如果系统盘空间不是很大,建议将cache目录重新指定到其他盘符。
缓存目录通过cache_dir指定,基本格式为:cache_dir
我配置的一个例子为:
cache_dir ufs D:/squid/var/cache 1000 10 10
即指定“D:/squid/var/cache”为缓存根据录,缓存最多可以使用1000MB空间,一级子目录及二级子目录数为10个。
其他的跟cache相关的重要配置有:
maximum_object_size_in_memory #指定最大可在内存缓存的对象大小default8KB
maximum_object_size #指定最大可存储到磁盘的对象大小default4MB
minimum_object_size #允许在磁盘缓存的最小对象值default0
cache_mem #指定squid可以使用的内存值default8 MB
(4)squid启动并注册为服务
通过在squid/sbin目录下执行squid-i [-n serviceName] [-f configure_file_path]来启动squid代理并注册为Windows服务。其中-n用来指定服务名,如果不指定,默认为squid。-f用来重新指定配置文件(squid.conf)路径,默认路径为C:/squid/etc/squid.conf。注册成服务后可以在操作系统服务管理里面将squid服务设置成自启动。
5 其他
之所以推荐将squid解压到C盘根目录,是因为squid默认参数配置里面众多与路径相关的参数的配置都是以c:/squid为根路径。可以在squid.conf中搜索“c:/squid”。如果需要安装到其他目录或磁盘,需要将squid.conf中所有相关参数一一修改,要做的工作非常多,所以建议还是安装在C盘。
6 参考
(1)squid官方网站: http://www.squid-cache.org/
(2)anyx博客: http://blog.csdn.net/thinkscape/article/details/8813964
(3)《Squid:The Definitive Guide》byDuane Wessels
(4)《squid权威指南》(彭勇华翻译DuaneWessels著作)
7 附录
squid命令使用说明:
squid- proxy caching server
squid [ -dhirsvzCDFINRVYX ][ -l facility ] [ -f config-file ][ -[ au ] port ] [ -ksignal ] [ -n service-name ][ -O cmd-line ]
squid isa high-performance proxy caching server for web clients, supportingFTP, gopher, and HTTP data objects. Unlike traditional cachingsoftware, squid handles all requests in a single,non-blocking, I/O-driven process.
squid keepsmeta data and especially hot objects cached in RAM, caches DNSlookups, supports non-blocking DNS lookups, and implements negativecaching of failed requests.
squid supportsSSL, extensive access controls, and full request logging. By usingthe lightweight Internet Cache Protocol, squid cachescan be arranged in a hierarchy or mesh for additional bandwidthsavings.
squid consistsof a main server program squid, a Domain Name System lookup programdnsserver, some optional programs for rewriting requests andperforming authentication, and some management and client tools. Whensquid starts up, it spawns a configurable number of dnsserverprocesses, each of which can perform a single, blocking Domain NameSystem (DNS) lookup. This reduces the amount of time the cache waitsfor DNS lookups.
squid isderived from the ARPA-funded HarvestProject http://harvest.cs.colorado.edu/
Thismanual page only lists the command line arguments. For details on howto configure squid seethe file c:/squid/etc/squid.conf, theSquid FAQ and the documentation at the squid homepage http://www.squid-cache.org