squid缓存代理设置

squid代理介绍

一、Squid代理服务器
Squid主要提供缓存加速、应用层过滤控制的功能。
1、代理的工作机制
代替客户机向网站请求数据,从而可以隐藏用户的真实IP地址。
将获得的网页数据(静态 Web 元素)保存到缓存中并发送给客户机,以便下次请求相同的数据时快速响应。

2、代理的类型
① 传统代理:适用于Internet,需在客户机指定代理服务器的地址和端口。
② 透明代理:客户机不需指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器
处理。
③ 反向代理:如果 Squid 反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将向后台的 WEB 服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存(静态)在本地,供下一个请求者使用。
(是否确认缓存在本地还得通过配置文件来定义)

squid代理的安装

#安装squid
[root@www ~]# yum -y install gcc gcc-c++ make
[root@www ~]# tar xvf squid-3.5.27.tar.gz -C /opt
[root@www ~]# cd /opt/squid-3.5.27/

[root@www squid-3.5.27]# ./configure --prefix=/usr/local/squid \
--sysconfdir=/etc \		#指定配置文件位置
--enable-arp-acl \		#开启acl摄制,可以通过设置acl防止ip欺诈
--enable-linux-netfilter \		#开启内核过滤
--enable-linux-tproxy \			#支持透明模式
--enable-async-io=100 \			#异步i/o,提升存储性能
--enable-err-language="Simplify_Chinese" \		#错误信息以中文显示
--enable-underscore \			#允许url有下划线
--enable-poll \					#使用poll模式,提升性能
--enable-gunregex				#可以使用正则表达式

[root@www squid-3.5.27]# make && make install
[root@www squid-3.5.27]# useradd -M -s /sbin/nologin squid	#创建squid用户
[root@www squid-3.5.27]# chown -R squid:squid /usr/local/squid/var/	#将/usr/local/squid/var/目录的属主属组更改为squid

[root@www squid-3.5.27]# vim /etc/squid.conf
#在56行deny all前插入一行,acl规则匹配到一条后就结束匹配
http_access allow all

#在61行添加
cache_effective_user squid     #添加,指定程序用户,用来设置初始化、运行时缓存的账号,否则启动不成功
cache_effective_group squid    #添加,指定账号基本组

配置squid服务脚本
[root@localhost ~]# vim /etc/init.d/squid
#!/bin/bash
#chkconfig: 35 90 25
#config: /etc/squid.conf
#pidfile: /usr/local/squid/var/run/squid.pid
#Description: Squid - Internet Object Cache

PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"

case "$1" in
        start)
                netstat -utpln | grep squid &>/dev/null
                if [ $? -eq 0 ]
                        then
                                echo "Squid is running"
                else
                        $CMD
                fi
        ;;
        stop)
                $CMD -k kill &>/dev/null
                rm -rf $PID &>/dev/null
        ;;
        status)
                [ -f $PID ] &>/dev/null
                        if [ $? -eq 0 ]
                          then
                                netstat -utpln | 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 "用法:{start | stop | restart | reload | check | status}"
esac


[root@www squid-3.5.27]# chmod +x /etc/init.d/squid		#给服务脚本可执行权限
[root@www squid-3.5.27]# chkconfig --add squid		#让service识别squid
[root@www squid-3.5.27]# chkconfig squid on
[root@www squid-3.5.27]# service squid start		#开启squid

squid代理模式配置

传统模式

传统模式需要在浏览器上手动指定代理服务器,通过这个代理服务器访问后端服务器

配置环境:
squid代理服务器 ens33:192.168.60.215
web服务器1 ens33:192.168.60.11
客户机 ens33:192.168.60.20

squid服务器的设置
[root@www squid-3.5.27]# iptables -F	#清空防火墙规则
#插入一条规则,对通过tcp的3218端口进来的ip放通
[root@www squid-3.5.27]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
web服务器的设置
yum -y install httpd 
systemctl start httpd
vim /var/www/html/index.html
this is first!		#在主页文件中写入内容

在谷歌浏览器中点击这个,然后找到设置
在这里插入图片描述
选择高级——》系统——》打开计算机的代理
在这里插入图片描述
手动配置代理服务器
在这里插入图片描述
然后访问web服务器,并在web服务器上查看访问日志,观察访问web服务器的是什么ip地址
在这里插入图片描述
tail -f /var/log/httpd/access_log查看web服务器的访问日志,发现是代理服务器的访问ip
在这里插入图片描述
如果尝试访问代理服务器则会出现下面的画面
在这里插入图片描述

透明代理模式

透明代理不需要在系统中指定代理服务器,当客户机访问后端服务器时,会经过代理服务器,然后代理服务器去向后端服务器进行请求,获取信息后返回给客户机,整个过程中用户对代理服务器无感知。
配置环境:
squid代理服务器 ens33:192.168.60.215 ens36:192.168.214.215
web服务器 ens33:192.168.60.11
客户机 192.168.214.214

[root@www ~]# vim /etc/squid.conf
对57行进行修改,将其注释掉
#http_access deny all
对60行进行修改,添加以透明代理的方式提供内网服务的ip
http_port 192.168.214.215:3128 transparent

开启路由转发
[root@www ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@www ~]# sysctl -p	#刷新一下配置

[root@www ~]# iptables -F
[root@www ~]# iptables -t nat -F
[root@www ~]# iptables -t nat -I PREROUTING -i ens36 -s 192.168.214.0/24 -p tcp --dport 80 -j REDIRECT --to 3128	#当192.168.214.0网段通过ens36网口访问时,将80端口修改为3128端口

通过客户机访问192.168.60.11
在这里插入图片描述
再观察访问日志
在这里插入图片描述

反向代理模式

反向代理同样不需要指定代理服务器,当客户机访问一个域名时,反向代理会将请求以轮询的形式转发给后端服务器。

[root@www ~]# iptables -F
[root@www ~]# iptables -t nat -F
[root@www ~]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT	#请求进入squid服务器时,修改端口为3128

[root@www ~]# vim /etc/squid.conf
#修改60行,并添加下面的内容
http_port 192.168.60.215:80 accel vhost vport		#指定地址池,访问时使用虚拟ip,虚拟端口
cache_peer 192.168.60.11 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1 	#以轮询的方式反向代理给后端服务器	max_conn 最大连接数	weight 权重
cache_peer 192.168.60.20 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.game.com	#设置web1,web2服务器的域名

[root@www ~]# systemctl restart squid

客户机上进入/etc/hosts添加域名映射
[root@master ~]# vim /etc/hosts
192.168.60.215 www.game.com

客户机访问www.game.com网页,可以发现以轮询的方式访问
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值