目录
一. web代理的工作机制
- 缓存网页对象,减少重复请求
- 以下的公司架构图辅助理解
二. 代理的基本类型
- 传统代理:适用于internet,需明确指明服务端
- 透明代理:客户机不需要指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将web访问重定向给代理服务器处理
三. 使用代理的好处
- 提高web’访问速度
- 隐藏客户机的真实IP地址
四. 部署squid 传统模式
12.0.0.22 代理服务器
12.0.0.23 apche服务器
12.0.0.100 访问客户端
4.1 修改主机名,便于识别
[root@lamp ~]# hostnamectl set-hostname squid
[root@lamp ~]# su
[root@squid ~]#
[root@hostlocal ~]# hostnamectl set-hostname web
[root@hostlocal ~]# su
[root@web ~]#
4.2 编译安装squid
./configure
拖入压缩包到opt下然后解压
[root@squid opt]# tar zxvf squid-3.4.6.tar.gz
./configure解压
[root@squid squid-3.4.6]# cd squid-3.4.6/
[root@squid squid-3.4.6]# ./configure --prefix=/usr/local/squid \ ##安装路径
--sysconfdir=/etc \ ##配置文件所在目录
--enable-arp-acl \ ##访问控制列表
--enable-linux-netfilter \ ##内核过滤
--enable-linux-tproxy \ ##支持透明模式
--enable-async-io=100 \ ##io优化
--enable-err-language="Simplify_Chinese" \ ##支持报错语言形式
--enable-underscore \ ##支持下划线
--enable-poll \ ##poll功能提升
--enable-gnuregex ##支持正则表达式
mdke编译
[root@squid squid-3.4.6]# make && make install
做一个软连接让squid的命令能够被系统识别
[root@squid squid-3.4.6]# ln -s /usr/local/squid/sbin/ /usr/local/sbin
建立一个程序性用户管理squid
[root@squid squid-3.4.6]# useradd -M -s /sbin/nologin squid
赋予目录权限,var下有个run会跑squid里面的服务pid文件
[root@squidt squid-3.4.6]# chown -R squid.squid /usr/local/squid/var/
修改配置文件
[root@localhost squid-3.4.6]# vi /etc/squid.conf
56 http_access allow all ##改为allow all允许所有访问
59 http_port 3128 下添加内容
cache_effective_user squid ##缓存管理用户和组
cache_effective_group squid
wq保存退出
检查语法是否有错等同于niginx -t及初始化
[root@squid sbin]# squid -k parse //检查语法
[root@squid sbin]# squid -z //初始化
启动服务
[root@squid sbin]# squid
[root@squid sbin]# netstat -anpt|grep 3128
tcp6 0 0 :::3128 ::: LISTEN 36876/(squid-1)
把squid放入service中,给server管理
#!/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 -anpt|grep squid &> /dev/null
if [ $? -eq 0 ];then
echo "squid is runing"
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 -anpt|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
[root@localhost init.d]# cd /etc/init.d/
[root@localhost init.d]# chmod +x squid
[root@localhost init.d]# chkconfig --add squid
[root@localhost init.d]# service squid stop
[root@localhost init.d]# service squid start
4.3 设置传统代理
4.31 修改主配置文件
[root@localhost squid-3.4.6]# vi /etc/squid.conf
接着3128端口下继续插入
cache_mem 64 MB ##缓存空间
reply_body_max_size 10 MB ##允许用户下载最大容量
maximum_object_size 4096 KB ##缓存中存储对象上限值
###################################################
如下:
http_port 3128
cache_mem 64 MB
reply_body_max_size 10 MB
maximum_object_size 4096 KB
cache_effective_user squid
cache_effective_group squid
4.32 清空防火墙和关闭核心防护添加新的规则允许代理
[root@localhost init.d]# iptables -F
[root@localhost init.d]# setenforce 0
setenforce: SELinux is disabled
root@localhost init.d]# iptables -I INPUT -p tcp --dport 3218 -j ACCEPT
root@localhost init.d]# service squid restart
4.4 web端的配置(20.0.0.23)
[root@localhost opt]# yum -y install httpd
[root@localhost opt]# systemctl start httpd
注意:使用客户端12.0.0.100 访问web,观察web端httpd的日志,若访问ip为代理服务器则,代理成功
4.5 访问客户机的设置(20.0.0.100)
4.5 回到httpd 服务器观察日志(12.0.0.23)
查看实际的ip地址看是否为代理服务器(12.0.0.22)进行访问
[root@localhost ~]# tail -f /var/log/httpd/access_log
12.0.0.22 - - [04/Nov/2020:09:56:39 +0800] "GET / HTTP/1.1" 403 4897 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"
12.0.0.22 - - [04/Nov/2020:09:56:40 +0800] "GET /noindex/css/bootstrap.min.css HTTP/1.1" 200 19341 "http://12.0.0.23/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"
12.0.0.22 - - [04/Nov/2020:09:56:40 +0800] "GET /noindex/css/open-sans.css HTTP/1.1" 200 5081 "http://12.0.0.23/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"