Squid 简介
Squid是比较知名的代理软件,不仅可以做正向代理,又可以做反向代理。
当作为正向代理时,Squid后面是客户端,客户端想上网不管什么网都得经过Squid. 当一个用户(客户端)想要请求一个主页时,它向Squid发出一个申请,要Squid替它请求,然后Squid 连接用户要请求的网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户请求同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。使用正向代理时,客户端需要做一些设置,才能实现,也就是平时我们在IE选项中设置的那个代理。
而反向代理是,Squid后面为某个站点的服务器,客户端请求该站点时,会先把请求发送到Squid上,然后Squid去处理用户的请求动作。教你一个特别容易的区分:正向代理,Squid后面是客户端,客户端上网要通过Squid去上;反向代理,Squid后面是服务器,服务器返回给用户数据需要走Squid.
正向代理的工作流程
搭建正向代理
CentOS系统自带Squid包,但是需要安装一下:
[[email protected] ~]# yum install -y squid
安装完后,可以查看squid版本和编译参数:
[[email protected] ~]# squid -v Squid Cache: Version 3.1.10
重写配置文件
还记得之前重定向符号清空文档内容么
>/etc/squid/squid.conf
vim /etc/squid/squid.conf
http_port 3128 //启动后监听3128端口 acl manager proto cache_object acl localhost src 127.0.0.1/32 ::1 //定义本地网段 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1 acl localnet src 10.0.0.0/8 # RFC1918 possible internal network acl localnet src 172.16.0.0/12 # RFC1918 possible internal network acl localnet src 192.168.0.0/16 # RFC1918 possible internal network acl SSL_ports port 443 acl Safe_ports port 80 8080 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl CONNECT method CONNECT http_access allow manager localhost //允许本地网段使用 http_access deny manager //拒绝所有 http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localnet http_access allow localhost http_access allow all cache_dir aufs /data/cache 10240 16 256 //缓存分10个G cache_mem 2048 MB //内存分2个G hierarchy_stoplist cgi-bin ? coredump_dir /var/spool/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern \.(jpg|png|gif|mp3|xml) 1440 50% 2880 ignore-reload refresh_pattern . 0 20% 4320
配置文件保存好后,可以先检测一下是否有语法错误:
[[email protected] ~]# squid -kcheck
如果提示信息为:
squid: ERROR: No running copy
这是说squid还未启动,没有关系,显示成这样说明配置文件没有问题了。
在启动前还得再做一件事,就是初始化缓存目录:
[[email protected] ~]# mkdir /data/cache //如果没有data目录请先建data [[email protected] ~]# chown -R squid:squid /data/cache/ [[email protected] ~]# squid -z 2014/11/12 16:25:14| Creating Swap Directories 2013/11/12 16:25:14| /data/cache exists
好了,初始化完成后,就可以启动squid了:
[[email protected] ~]#
正在启动 squid:. [确定]
查看squid是否启动:
[[email protected] ~]# ps aux |grep squid root 7201 0.0 0.7 14524 2444 ? Ss 16:25 0:00 squid -f /etc/squid/squid.conf squid 7204 0.0 2.7 17468 9024 ? S 16:25 0:00 (squid) -f /etc/squid/squid.conf squid 7205 0.0 0.2 3280 916 ? S 16:25 0:00 (unlinkd)
验收结果
1.直接使用curl命令测试即可:
[[email protected] ~]# curl -xlocalhost:3128 http://www.baidu.com/
如果你看到了一大串,说明squid正向代理设置ok啦。另外我们也可以观察squid对图片的缓存:
<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=Edge"><link rel="dns-prefetch" href="//s1.bdstatic.com"/><link rel="dns-prefetch" href="//t1.baidu.com"/> href="//t12.baidu.com"/><link rel="dns-prefetch" href="//b1.bdstatic.com"/><title>百度一下,你就知道</title>
2.配置浏览器代理
打开浏览器(以IE为例,其他类似),菜单栏 -> 工具 -> Internet 选项 -> 连接 -> 局域网设置 -> 代理服务器,按照以下格式设置。
输入你自己的squid服务器地址哟!