一、squid介绍
squid是比较知名的代理软件。支持缓存和多种协议。
squid拥有CDN加速的功能,是因为他的缓存功能,不仅可以节省宝贵的带宽流量,还可以大大降低服务器的I/O。
squid不仅可以做正向代理,还可以做反向代理。
二、正向代理和反向代理
squid正向代理
:如下图,用户想要访问服务器B,但是因为网关等问题无法访问,这个时候代理服务器Z是服务器B的代理,用户可以通过服务器Z来访问到B。简单来说,用户通过squid连接到代理服务器Z来访问服务器B,服务器B是不知道有用户来访问他的,只知道有代理服务Z可以和他连接。
正向代理时,squid的后端是作用于用户,客户端要想上网需要经过squid
。当用户发出请求时,就会向squid发出一个请求,squid会替用户进行请求到代理服务器。代理服务会向服务器再次请求,服务器B响应给代理服务器,代理在处理给squid再给用户,同时给这个请求做了一个备份,下个用户访问时会觉得速度很快。
常用在限制用户上网或者减少带宽情况,员工想上网必须经过代理可以节省资源
squid的反向代理
:如下图,用户是不知道有资源服务器B的,只知道有一个代理服务器Z,用户想要上网,就必须经过服务器Z。
反向代理时,squid的后端是作用于原始资源服务器,资源服务器返回给用户数据时必须经过squid
。当用户发起一个请求时,发送给代理服务器的squid上,squid会处理用户的请求。
常用在搭建网站静态项的缓存服务器中,用于网站架构里
三、正向代理配置
首先要安装squid,也可以编译安装
yum install -y squid
修改配置文件/etc/squid/squid.conf
1.修改cache_dir,这是缓存的存放目录
,100目录大小100M,一级目录16个,二级目
录 有256个
做缓存的目的是可以增加某些静态文件的访问速度。
将#去掉
2.配置cache_mem,这是内存的缓存,将部分内存作为缓存使用
没有需要添加,设置大小不能超过cache_dir的大小
3.设置哪些文件可以缓存
如增加图片类和js等静态文件可以缓存,ignore-reload是忽略重启,即重启缓存也生效
启动squid:/etc/init.d/squid
如果启动visible_hostname报错,需要在配置文件增加配置visible_hostname +主机名
4. 可以查看squid的端口默认是3128.
可以在浏览器设置代理测试
可以使用curl -x127.0.0.1:3128 www.baidu.com -I测试端口
5.可以查看squid的缓存目录、16个一级目录和256个二级目录
256个二级目录在每个一级目录下
6.可以在配置文件设置访问的网站有哪些
这用到了acl控制访问
acl http proto HTTP #是增加http协议
acl good_domain dstdomain #网站白名单和规则,也可以设置成黑名单bad_domain
http_access #是访问控制权限
7.使用squid -kcheck检测是否有错误
使用squid -kre 重启配置
这个错误就是cache_mem 数字后面必须有个空格,还需要定义visible_hostname
8.使用curl测试访问
不在白名单的就会报403错误
tcpdump -nn port 3128抓包
四、反向代理配置
因为反向代理是让用户认为代理服务器就是最终的服务器,所以需要将端口改成80
修改配置文件
1.修改http_port
2.设置做谁的反向代理,即让谁的服务器可以返回给用户数据
如做qq的代理服务器,需要知道腾讯的IP,想要增加其他的需要在增加cache_peer两行
cache_peer 定义想要代理的网站IP