Home >php教程 >php手册 >windows上使用squid搭建代理服务器

windows上使用squid搭建代理服务器

WBOY
WBOYOriginal
2016-06-13 08:39:561671browse

windows上使用squid搭建代理服务器

本文中SQUID放在172.20.65.201的机器上,应用WEB SERVER IP为172.20.65.203,其中SQUID在201上的80端口侦听,测试客户端机器为172.20.65.231,在squid.conf中#代表注释,所以开启某项设置,需去掉前面的#。TAG标签代表每一功能项的设置。

1、下载

下载SQUID FOR WINDOWS(我所用的版本是Squid 2.7.STABLE6,各个版本的配置可能略有不同,大家请注意)


2、安装
将SQUID解压到c:\squid(当然也可解压在其它盘符下)

3、建立磁盘缓存和日志目录
默认情况是在安装磁盘下建立,为确保性能大幅度提升,建立选择磁盘空间容量较大的盘符,如:建立d:\squid\var目录,在var目录下建立logs和cache目录,其中logs目录用 于存放日志,cache目录用于存放硬盘缓存数据。

4、建立缓存目操作权限
为了使抓取的数据,能够存放在缓存目录下,建立系统账户如squidApp,将其属于普通用户组应可,将d:\squid授予该用户读写权限即可。

5、文件更改
c:\squid\etc是SQUID的配置信息的存放处,为确保安全,在你修改配置文件前,请将其备份,然后将squid.conf.default修改为squid.conf,
mime.conf.default修改为 mime.conf ,cachemgr.conf.default 修改为cachemgr.conf

6、配置SQUID
针对于SQUID来讲大部分配都在squid.conf中,本文中所使用环境如下:

开启如下访问控制[plain]view plaincopy
  1. aclallsrcall
  2. aclmanagerprotocache_object
  3. acllocalhostsrc127.0.0.1/32
  4. aclto_localhostdst127.0.0.0/8
  5. acllocalnetsrc172.16.65.231/255.255.0.0指定本地网络及掩码

开启访问端口[plain]view plaincopy
  1. aclSSL_portsport443
  2. aclSafe_portsport80#http
  3. aclSafe_portsport21#ftp
  4. aclSafe_portsport443#https
  5. aclSafe_portsport70#gopher
  6. aclSafe_portsport210#wais
  7. aclSafe_portsport1025-65535#unregisteredports
  8. aclSafe_portsport280#http-mgmt
  9. aclSafe_portsport488#gss-http
  10. aclSafe_portsport591#filemaker
  11. aclSafe_portsport777#multilinghttp
  12. aclCONNECTmethodCONNECT

开启访问控制,请一定要注意顺序[plain]view plaincopy
  1. http_accessallowmanagerlocalhost
  2. http_accessdenymanager
  3. http_accessdeny!Safe_ports
  4. http_accessdenyCONNECT!SSL_ports
  5. http_accessallowall
  6. http_accessallowlocalnet
  7. http_accessdenyall

指定SQUID在80端口侦听, vhost 指定使用加速模式,http_prot默认应该是3128,可以在配置文件中搜索http_prot来查看[plain]view plaincopy
  1. http_port80vhost

172.20.65.203后台WEB SERVER, parent指父节点, 80 指后台网站的端口, 0 ICP 服务端口,no-query originserver 获取缓存时的选项[plain]view plaincopy
  1. cache_peer172.20.65.203parent800no-queryoriginserver

缓存设置[plain]view plaincopy
  1. maximum_object_size_in_memory1024KB
  2. cache_dirufsd:/squid/var/cache102416256注意路径
  3. maximum_object_size4096KB
  4. cache_swap_low90
  5. cache_swap_high95

日志设置[plain]view plaincopy
  1. access_logd:/squid/var/logs/access.logsquid访问日志
  2. cache_logd:/squid/var/logs/cache.log
  3. cache_store_logd:/squid/var/logs/store.log
  4. emulate_httpd_logon

控制页面缓存内容[plain]view plaincopy
  1. refresh_pattern^ftp:144020%10080
  2. refresh_pattern^gopher:14400%1440
  3. refresh_pattern-i(/cgi-bin/|\?)00%0
  4. refresh_pattern.020%4320
  5. refresh_pattern-i\.css$2050%120reload-into-ims
  6. refresh_pattern-i\.xml$2050%120reload-into-ims
  7. refresh_pattern-i\.html$2090%120reload-into-ims
  8. refresh_pattern-i\.jpg$2090%120reload-into-ims
  9. refresh_pattern-i\.png$2090%120reload-into-ims
  10. refresh_pattern-i\.gif$2090%120ignore-reload
  11. refresh_pattern-i\.js$2090%120reload-into-ims
  12. refresh_pattern-i\.htm$2090%120reload-into-ims

设置邮箱
[plain]view plaincopy
  1. cache_mgrwebmaster_breeze

设置本地主机文件[plain]view plaincopy
  1. hosts_filec:/windows/system32/drivers/etc/hosts

7、安装服务
将squid安装为服务,命令格式:[plain]view plaincopy
  1. squid-i[-fconfigfile][-nservicename],如c:\squid\sbin\squid-i-nSquid_Proxy

8、初始化缓存目录
[plain]view plaincopy
  1. c:\squid\sbin\squid-z

9、启动Squid_Proxy服务
运行services.msc打开服务窗口,选择Squid_Proxy服务 ,如果启动过程出错90%是配置文件出现问题。

10、squid命令
[plain]view plaincopy
  1. squid-kreconfigure//启用新的配置文件
  2. squid-krotate//截断日志
  3. squid-kshutdown//stopsquid
  4. squid-dx当服务不能启动时,进行调试
更多配置请参见文档

四、SQUID测试
找一台机器进行测试,并查看access.log日志,如果出现 TCP_DENY的信息,多为配置不正确。如出现如下信息TCP_MEM_HIT/200 表示,SQUID已经起作用,该请求是从 SQUID运行机器的内存中响应的。

######################
常用调试命令
######################

1、初始化你在 squid.conf 里配置的 cache 目录
#squid/sbin/squid -z //第一次启动squid服务时必须输入此命令

如果有错误提示,请检查你的 cache目录的权限。

2、对你的squid.conf 排错,即验证 squid.conf 的 语法和配置。

#squid/sbin/squid -k parse

如果squid.conf 有语法或配置错误,这里会返回提示你,如果没有返回,恭喜,可以尝试启动squid。

3、在前台启动squid,并输出启动过程。

#squid/sbin/squid -N -d1
如果有到 ready to server reques,恭喜,启动成功。

然后 ctrl + c,停止squid,并以后台运行的方式启动它。

4、启动squid在后台运行。

#squid/sbin/squid -s

这时候可以 ps -A 来查看系统进程,可以看到俩个 squid 进程。

5、停止 squid

#squid/sbin/squid -k shutdown
这个不用解释吧。

6、重引导修改过的 squid.conf

#squid/sbin/squid -k reconfigure

这个估计用的时候比较多,当你发现你的配置有不尽你意的时候,可以随时修改squid.conf,然后别忘记对你的 squid.conf排错,然后再执行此指令,即可让运行中squid重新按照你的squid.conf 来运行。

7、把squid添加到系统启动项

编辑 /etc/rc.d/rc.local
添加如下行: /usr/local/squid/sbin/squid -s

当然,并不是每个人都喜欢这种启动方式,你可以用你最习惯的方式;或者把它安装为服务。


其他

1、修改cache 缓存目录的权限。

#chown -R squid:squid /home/cache

我的cache缓存目录是 /home/cache,squid执行用户和用户组是 squid,squid。

2、修改squid 日志目录的权限

#chown -R squid:squid /usr/local/squid/var/logs
这一步并不是适合每一个使用squid的用户.意为让squid有权限在该目录进行写操作 。

例如生成 access.log cache.log store.log

3、查看你的日志文档。

#more /usr/local/squid/var/logs/access.log | grep TCP_MEM_HIT
该指令可以看到在squid运行过程中,有那些文件被squid缓存到内存中,并返回给访问用户。
#more /usr/local/squid/var/logs/access.log | grep TCP_HIT
该指令可以看到在squid运行过程中,有那些文件被squid缓存到cache目录中,并返回给访问用户。
#more /usr/local/squid/var/logs/access.log | grep TCP_MISS
该指令可以看到在squid运行过程中,有那些文件没有被squid缓存,而是现重原始服务器获取并返回给访问用户。
关于 TCP_XXXX 等参数及代表的信息,请参看彭勇华《squid中文权威指南》13.2.1 章节。

当然,本例中的蓝色文字是可以修改为其他的参数,例如你的域名,同样可以看到access.log里关于该域名的行。


4、squid -k rotate 轮换squid的日志文件/var/log/squid,Squid代理服务器日志文件
的增长速度是惊人的,很容易点球满磁盘空间导致系统不能正常工作,甚至是死机.为了解决日志文件增长太快的问题,squid采用了"轮换"的方法.在squid.conf中可以通过logfile_rotate来设置文件轮换的个数,如:
logfile_rotate 10 ,轮换的工作一般用crontab定时器完在周期性的日志轮换,例如每周六凌晨2:00进行日志轮换,则执行如下命令: crontab -e
0 2 * * 6 squid -k rotate
小贴士:Squid默认的错误提示信息为英文,对于英文不好的用户来说,实在不方便.在/etc/squid/squid.conf里添加如下:
error_directory /usr/share/squid/errors/Simplify_Chinese 即可显示中文的错误提示。
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn