文章目录
缓存概述
Web代理的工作机制
- 缓存网页对象,减少重复请求
代理的基本类型
- 传统代理:适用于Internet,需明确指定服务端
- 透明代理:客户机不需指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理
使用代理的好处
- 提高Web访问速度
- 隐藏客户机的真实IP地址
部署代理实验
实验环境
- squid:20.0.0.10
- web1:20.0.0.11
- web2:20.0.0.12
- client:20.0.0.13
Squid安装及运行
1:解压缩软件包
[root@squid ~]# tar zxvf squid-3.5.23.tar.gz
2:配置以及编译安装
[root@squid ~]# cd squid-3.5.23/
[root@squid squid-3.5.23]# ./configure --prefix=/usr/local/squid --sysconfdir=/etc
--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@squid squid-3.5.23]# make && make install
配置解释
- –enable-linux-netfilter #linux内核通过netfilter模块实现网络访问控制功能
- –enable-linux-tproxy #实现透明代理功能
- –enable-async-io=100 #异步传输输入输出数量
- –enable-err-language=“simplify Chinese” #用中文报错
- –enable-underscore #允许下划线
- –enable-poll #协调读写设备个数或读写设备顺序的函数
- –enable-gnuregex #c/c++常用的正则表达式
3:创建链接
[root@squid ~]# ln -s /usr/local/squid/sbin/* /usr/sbin/
4:创建不可登录用户
[root@squid ~]# useradd -M -s /sbin/nologin squid
5:更改所有者
[root@squid ~]# chown -R squid.squid /usr/local/squid/var/
6:修改配置文件并检查语法
[root@squid ~]# vi /etc/squid.conf
# Leave coredumps in the first cache dir
cache_effective_user squid #添加:指定程序用户
cache_effective_group squid #添加:指定账号基本组
coredump_dir /usr/local/squid/var/cache/squid
[root@squid ~]# squid -k parse
7:初始化缓存目录并开启服务
[root@squid ~]# squid -z
[root@squid ~]# squid
[root@squid ~]# netstat -anpt | grep squid
tcp6 0 0 :::3128 :::* LISTEN 98006/(squid-1)
8:创建管理文件
[root@squid ~]# vi /etc/init.d/squid
#!/bin/bash
#chkconfig: 35 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 -anpt | 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
;;
reload)
$CMD -k reconfigure
;;
status)
[ -f $PID ] &> /dev/null
if [ $? -eq 0]
then netstat -anpt | grep squid
else echo "squid is not running"
fi
;;
restart)
$0 stop &> /dev/null
$0 start &> /dev/null
;;
check)
$CMD -k parse
;;
*)
echo "用法: $0{start|stop|status|restart|reload|check}"
esac
[root@squid ~]# chmod +x /etc/init.d/squid
[root@squid ~]# chkconfig --add /etc/init.d/squid
[root@squid ~]# chkconfig --list
9:传统代理服务器设置
[root@squid ~]# vi /etc/squid.conf
# And finally deny all other access to this proxy
http_access allow all #添加:允许所有
http_access deny all
http_port 3128
cache_mem 64 MB #添加
reply_body_max_size 10 MB #添加
maximum_object_size 4096 KB #添加
[root@squid ~]# squid -k parse
解释
- cache_mem 64 MB#指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4
- reply body max size 10 MB#允许用户下载的最大文件大小,以字节为单位。默认设置0表示不进行限制
- maximum object size 4096 KB#允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户
10:开启服务
[root@squid ~]# systemctl stop squid
[root@squid ~]# systemctl start squid
[root@squid ~]# systemctl status squid
● squid.service - (null)
Loaded: loaded (/etc/rc.d/init.d/squid; bad; vendor preset: disabled)
Active: active (running) since 二 2020-12-15 15:31:19 CST; 2s ago
Docs: man:systemd-sysv-generator(8)
Process: 98470 ExecStop=/etc/rc.d/init.d/squid stop (code=exited, status=0/SUCCESS)
Process: 98480 ExecStart=/etc/rc.d/init.d/squid start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/squid.service
├─98484 /usr/local/squid/sbin/squid
├─98486 (squid-1)
└─98487 (logfile-daemon) /usr/local/squid/var/logs/access.log
[root@squid ~]# netstat -anpt | grep squid
tcp6 0 0 :::3128 :::* LISTEN 98486/(squid-1)
web以及client设置
1:安装Apache服务
[root@web1 ~