CentOS6.7 Squid 代理服务器安装配置
Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。Squid与Linux下其它的代理软件如Apache、Socks、TIS FWTK和delegate相比,下载安装简单,配置简单灵活,支持缓存和多种协议。Squid之所以使用广泛,是因为它的缓存功能,Squid缓存不仅可以节省宝贵的带宽资源,也可以大大降低服务器的I/O. 从经济角度考虑,它是很多网站架构中不可或缺的角色。
Squid不仅可以做正向代理,又可以做反向代理。
正向代理,Squid后面是客户端,客户端想上网不管什么网都得经过Squid. 当一个用户(客户端)想要请求一个主页时,它向Squid发出一个申请,要Squid替它请求,然后Squid 连接用户要请求的网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户请求同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。
正向代理,客户端需要做一些设置,才能实现,也就是平时我们在IE选项中设置的那个代理。而反向代理是,Squid后面为某个站点的服务器,客户端请求该站点时,会先把请求发送到Squid上,然后Squid去处理用户的请求动作。
如何区分:
正向代理,Squid后面是客户端,客户端上网要通过Squid去上,对于用而言,是知道有代理的存在,常用在企业中,作为代理上网,可以很好的控制后面的客户端访问网站;
反向代理,Squid后面是服务器,服务器返回给用户数据需要走Squid,对于用户而言,是不知道访问是一个代理,而觉得是服务器本身.
官方地址:http://www.squid-cache.org/
参考文档:http://www.squid-cache.org/Doc/config/
系统环境:
操作系统:CentOS 6.7
Squid版本:3.1.23
hostname:balichvm.org
1)、安装
[root@balichvm ~]# yum install squid �Cy
2)、Squid 配置正向代理,默认的配置文件/etc/squid/squid.conf
(1) 编辑/etc/squid/squid.conf,修改如下参数
增加visible_hostname balichvm.org
# cache_dir ufs /var/spool/squid 100 16 256 ##将前面的#号去掉
格式表示:名称;文件格式; 缓存目录路径; 缓存大小,单位MB; 一级子目录的数量; 二级子目录的数量
cache_dir ufs /var/spool/squid 100 16 256
增加cache_men,默认是没有这个配置,手动添加,由于缓存存放在硬盘上比较慢,可以放到内存上
cache_mem 64 MB
在refresh_pattern下面加入下我们需要缓存的文件,比如图片,音频,视频
refresh_pattern\.(jpg|png|gif|mp3|xml|js|css) 1440 20% 2880 ignore-reload
保存配置文件后,使用squid �Ckcheck 命令检查语法是否正确。
(2)、启动squid
[root@balichvm ~]# /etc/init.d/squid start
正在启动 squid:. [确定]
[root@balichvm ~]#
此时会在/var/spool/squid 生成缓存的目录。
(3).测试。squid默认监听的是3128端口(如果有使用iptables需要放行,或者关闭。)
[root@balichOS ~]# curl-x192.168.171.51:3128 -I www.baidu.com
HTTP/1.0 200 OK
Date: Fri, 06 Nov 2015 14:22:23 GMT
Content-Type: text/html; charset=utf-8
Vary: Accept-Encoding
Set-Cookie:BAIDUID=CA2C3DE3C2832FD456EA94D7B71041E5:FG=1; expires=Thu, 31-Dec-37 23:55:55GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie:BIDUPSID=CA2C3DE3C2832FD456EA94D7B71041E5; expires=Thu, 31-Dec-37 23:55:55 GMT;max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: PSTM=1446819743; expires=Thu,31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BDSVRTM=0; path=/
Set-Cookie: BD_HOME=0; path=/
Set-Cookie:H_PS_PSSID=10299_17764_17898_1433_7477_17620_17900_17782_17001_17072_15769_12054;path=/; domain=.baidu.com
P3P: CP=" OTI DSP COR IVA OUR IND COM"
Cache-Control: private
Cxy_all:baidu+75e6e8b83b863a1d9ff7d7c75a6c2d38
Expires: Fri, 06 Nov 2015 14:22:19 GMT
X-Powered-By: HPHP
Server: BWS/1.1
X-UA-Compatible: IE=Edge,chrome=1
BDPAGETYPE: 1
BDQID: 0xd402ae2e0002376f
BDUSERID: 0
X-Cache: MISS from balichvm.org
X-Cache-Lookup: MISS from balichvm.org:3128
Via: 1.0 balichvm.org (squid/3.1.23)
Connection: keep-alive
这样就相当于是一台代理服务器,提供给后面的客户端上网,这种多用于企业。
如果只开放访问那些网站,需要用到访问控制了
(4).访问控制(acl)
在acl CONNECT method CONNECT 下面增加如下配置
acl http proto HTTP #指定使用什么协议
acl good_domain dstdomain .baidu.com .qq.com #定义远程访问的域名
http_access allow good_domain #允许的
http_access deny !good_domain
保存配置文件后,重新加载配置文件,可以使用这个命令:squid reconfigure
在windows上测试,需要把ip的网关修改为squid服务器的IP地址。
3)、配置反向代理
反向代理是可以减轻后端的服务器的压力的,同时可以给用户更快的反问速度,从用户的角度来说,就想真实的访问的是后端的机器。因此,在配置文件上,首先squid监听的端口需要从3128修改为80。
比如我们做一个百度的单向代理,配置文件修改如下:
http_port 3128 改为 http_port80 accel vhost vport
增加如下内容:
cache_peer 61.135.169.125 parent 80 0originserver name=baidu
cache_peer_domain baidu www.baidu.com
保存配置文件,重启服务
[root@balichvm ~]# /etc/init.d/squidrestart
停止 squid:................ [确定]
正在启动squid:. [确定]
[root@balichvm ~]#
在Windows上测试,需要修改hosts文件,把www.baidu.com指向到我们的squid服务器IP上即可。