1、squid的概念
squid是一种用来缓存Internet数据的软件。接受来自人们需要下载的目标(object)的请求并适当的处理这些请求。也就是说,如果一个人想下载一web界面,他请求squid为他取得这个页面。squid随之连接到远程服务器并向这个页面发出请求。然后,squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时, squid可以简单的从磁盘中读到它,那样数据会立即传输到客户机上。
2、代理的工作机制
当客户机通过代理来请求web页面时,指定的代理服务器会先检查自己的缓存,如果缓存中已经有客户机需要访问的页面,则直接将缓存中的页面反馈给请求的客户端。如果缓存中没有,则由代理服务器向web服务器发起访问请求,当获得返回的web页面后,缓存服务器首先将数据保存到自己本身的缓存中,然后再发送给客户端.
3、作用
替客户机向网站请求数据,从而可以隐藏用户的真实 IP 地址。
将获得的网页数据(静态 Web 元素)保存到缓存中并发送给客户机,以便下次请求相同的数据时快速响应
4、squid服务器搭建(仅传统代理)
主机 IP 系统
缓存代理服务器 192.168.2.10 CentOS 7
Web服务器 192.168.2.11 CentOS 7
客户机;使用物理机 192.168.2.1 Windows10
网络yum源下载软件包
[root@cjq10 ~]#Wget http://www.squid-cache.org/Versions/v4/squid-4.8.tar.gz
安装依赖关系包
[root@cjq10 ~]#yum install libtool-ltdl-devel libxml2-devel libcap-devel perl gcc autoconf automake make
解压
[root@cjq10 ~]#tar xf squid-4.8.tar.gz
[root@cjq10 ~]#cd squid-4.8
预编译
[root@cjq10 squid-4.8]#./configure --prefix=/usr/local/squid --enable-arp-acl --enable-linux-netfilter --enable-linux-tproxy --enable-async-io=100 --enable-err-language="Simplify_Chinese" --enable-underscore --enable-poll --enable-gnuregex
编译和安装(时间较长)
[root@cjq10 squid-4.8]#make && make install
创建运行用户
[root@cjq10 squid-4.8]#useradd -M -s /sbin/nologin squid
修改权限
[root@cjq10 squid-4.8]#chown -R squid.squid /usr/local/squid/var
添加软连接
[root@cjq10 squid-4.8]#ln -s /usr/local/squid/sbin/squid /usr/local/sbin/
添加squid运行的用户及组
[root@cjq10 ~]#echo 'cache_effective_user squid' >> /usr/local/squid/etc/squid.conf
[root@cjq10 ~]#echo 'cache_effective_group squid' >> /usr/local/squid/etc/squid.conf
初始化缓存目录
[root@cjq10 ~]# squid -z
启动Squid
[root@cjq10 ~]# squid
查看Squid的运行用户
[root@cjq10 ~]#ps -ef | grep squid
查看Squid的端口号
[root@cjq10 ~]# netstat -antup | grep 3128
创建squid服务脚本
vim /etc/init.d/squid
#!/bin/bash
#chkconfig: 2345 90 25
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"
case "$1" in
start)
netstat -natp | grep squid &> /dev/null
if [ $? -eq 0 ]
then
echo "squid is running"
else
echo "正在启动 squid..."
$CMD
fi
;;
stop)
$CMD -k kill &> /dev/null
rm -rf $PID &> /dev/null
;;
status)
[ -f $PID ] &> /dev/null
if [ $? -eq 0 ]
then
netstat -natp | grep squid
else
echo "squid is not running"
fi
;;
restart)
$0 stop &> /dev/null
echo "正在关闭 squid..."
$0 start &> /dev/null
echo "正在启动 squid..."
;;
reload)
$CMD -k reconfigure
;;
check)
$CMD -k parse
;;
*)
echo "用法:$0{start|stop|status|reload|check|restart}"
;;
esac
添加执行权限
chmod +x /etc/init.d/squid
把服务加入chkconfig管理
chkconfig --add squid
3和5自启(7个启动级别)
chkconfig --level 35 squid on
5、客户机192.168.2.1配置
打开浏览器右上角 三个点
找到inernet选项
6、web服务器192.18.2.11配置
[root@cjq11 ~]# yum -y install httpd
[root@cjq11 ~]# systemctl start httpd
[root@cjq11 ~]# netstat -antup | grep 80
7、测试
squid服务器动态查看访问日志
[root@cjq10 ~]# tail -f /usr/local/squid/var/logs/access.log
Web服务器动态查看访问日志
[root@cjq11 ~]# tail -f /var/log/httpd/access_log
到浏览器访问192.168.2.11 web服务器
查看squid新增动态日志
查看squid日志我们看到了客户机访问web服务器的访问记录
查看http新增动态日志
查看web服务器我们看到实际上给web服务器发送访问请求的是squid缓存代理服务器的IP,而不是客户机的IP。说明设置成功。