Loading
0

Linux 之squid 服务应用

Squid是什么
Squid是比较知名的代理软件,它不仅可以跑在linux上还可以跑在windows以及Unix上,它的技术已经非常成熟。目前使用Squid的用户也是十分广泛的。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.
也许你会问,什么时候需要配置正向代理,又什么时候配置反向代理呢?阿铭的观点是,正向代理用在企业的办公环境中,员工上网需要通过Squid代理来上网,这样可以节省网络带宽资源。而反向代理用来搭建网站静态项(图片、html、流媒体、js、css等)的缓存服务器,它用于网站架构中。
示例:正向代理
用户A 想访问 服务器B 要经过N多的网关过去,还有可能这些网关不允许用户A 访问。
此时有一个服务器Z ,可以直接访问服务器B ,不需要经过那些网关。 此时 Z 就是代理服务器。此时的代理是  正向代理。代理的是用户端,而此时服务器B 不知道访问它的是 用户A ,只知道是 Z 访问了它,而不知道Z 后面的是谁。正向代理用户是知道有代理服务器Z 存在的,需要用户手动来设置IE(提高速度,变不可能为可能,)

示例:反向代理

图片中原始资源服务器B 是不可以访问外面的资源的。用户A 想直接访问B也是不行的。因为防火墙限定了。此时在B 服外面做一个反向代理服务器Z ,让Z 来请求数据,这样用户可以通过访问Z来达到访问B 的目的。这就是反向代理。(反向代理服务器Z 是网站提供方给用户的,用户不知道后端还有服务器B)
---------------------------------------------------------------
实例1:搭建squid正向代理
官方网站为 http://www.squid-cache.org/
yum install -y squid
squid -v  查看版本以及编译参数
> /etc/squid/squid.conf
vim /etc/squid/squid.conf
[root@LNMP ~]# yum install -y squid  #安装 squid
[root@LNMP ~]# vim /etc/squid/squid.conf #打开配置文件,打开缓存文件存放目录
cache_dir ufs /var/spool/squid 100 16 256 #启用缓存存放目录  100M 的大小
cache_mem 128 MB  #如果有这行打开,如果没有手动添加。启用一些内存作为缓存,加快速度
# Add any of your own refresh_pattern entries above these.
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320
refresh_pattern \.(jpg?www.myhack58.com|png|js|css|mp3|mp4) 1440 20% 2880 ignore_reload
#添加缓存匹配 ,这一行是手动添加的。保存退出
[root@LNMP squid]# /etc/init.d/squid start  #启动 squid 服务
#启动服务失败,报错没有设置 “visible_hostname”
[root@LNMP squid]# vim /etc/squid/squid.conf
refresh_pattern \.(jpg?www.myhack58.com|png|js|css|mp3|mp4) 1440 20% 2880 ignore_reload
visible_hostname Linux-test #设置 visible_hostname

2016/12/08 13:07:19| WARNING cache_mem is larger than total disk cache space!
*这一条用又报 cache_mem 设置过大,cache_mem 设置成了128M ,而缓存目录是 100M,所以这样设置是不合理的,将cache_mem 更改为28M,比缓存目录小。
启动:
[root@LNMP squid]# /etc/init.d/squid start
Starting squid:                                            [  OK  ]

分页阅读: 1 2 3
【声明】:8090安全小组门户(http://www.8090-sec.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们:邮箱hack@ddos.kim,我们会在最短的时间内进行处理。