squid代理介绍----传统代理

一、Sequid介绍

1.Sequid是什么?

Sequid是Linux系统中最常用的一款开源代理服务软件,可以很好的实现HTTP和FTP,以及DNS查询、SSL等应用的缓存代理,功能十分强大

2.squid的优势

  • 1.提高客户端访问速度
  • 2.隐蔽了内部主机的真实ip地址
  • 3.部署简单,可以实现访问控制

3.squid的作用

  • 1.代理上网(传统代理,透明代理)
  • 2.网站静态页面缓存加速(反向代理)

二、缓存代理

1.缓存代理概述

作为应用层的代理服务软件,squid作用是给缓存网页对象,减少

2.工作过程解析

当客户机通过代理来请求Web页面时,指定的代理服务器会先检查自已的缓存。如果缓存中已经有客户机需要的页面,则直接将缓存中的页面内容反馈给客户机。如果缓存中没有客户机要访问的页面,则由代理服务器向lnternet发送访问请求,获得返回的Web页面以后,将网页数据保存到缓存中并发送给客户机,如图所示:
在这里插入图片描述
HTTP 代理的缓存加速对象主要是文字、图像等静态 Web 元素。使用缓存机制后,当 客户机在不同的时候访问同一 Web 元素,或者不同的客户机访问相同的 Web 元素时,可 以直接从代理服务器的缓存中获得结果。这样就大大减少了向 Internet 提交重复的 Web 请求的过程,提高了客户机的 Web 访问响应速度。
由于客户机的 Web 访问请求实际上是由代理服务器来代替完成的,从而可以隐藏用户的真实 IP 地址,起到一定的保护作用。另一方面,代理服务器担任着类似“经纪人”的角色, 可以针对要访问的目标、客户机的地址、访问的时间段等进行过滤控制。

3.squid代理的基本类型

  • 传统代理:适用于lnternet,需明确指定服务器
  • 透明代理:客户机不需要指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理
  • 反向代理

三、squid传统代理的部署

客户端必须在自已的浏览器里指定服务器的ip地址和监听的端口号,才能通过squid代理服务器上网

1.案例介绍

在服务器上构建Squid代理服务器,允许客户机指定squid代理服务器作为Web代理,访问网站服务器,但禁止通过代理下载超过10MB的文件,超过4MB的文件不进行缓存

2.案例环境

在这里插入图片描述
安装squid服务器,在squid上安装软件
通过xshell的文件传输把redis的软件包传输上来

1.解压缩文件

[root@squid ~]# tar zxvf squid-3.5.23.tar.gz 

2.配置squid

[root@squid ~]# cd squid-3.5.23/
[root@squid squid-3.5.23]# ./configure 
--prefix=/usr/local/squid \        #安装路径
--sysconfdir=/etc \                   #配置文件根路径
--enable-arp-acl \                    #运行arp的acl
--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 squid-3.5.23]# make && make install
[root@squid squid-3.5.23]# cd

4.创建链接使squid命令可以在本地使用

[root@squid ~]# ln -s /usr/local/squid/sbin/* /usr/sbin/   

5.创建一个不可登录,不带宿主的用户

[root@squid ~]# useradd -M -s /sbin/nologin squid    

6.配置文件属主,属组

[root@squid ~]# chown -R squid.squid /usr/local/squid/var   

7.编辑配置文件

[root@squid ~]# vi /etc/squid.conf
[root@squid ~]# squid -k parse       #检查语法

添加
cache_effective_user squid           #指定程序用户
cache_effective_group squid        # 指定账号基本组

在这里插入图片描述
8.初始化缓存目录

[root@squid ~]# squid -z       #初始化缓存目录
[root@squid ~]# squid       #启动服务
[root@squid ~]# netstat -anpt | grep squid  #查看端口状态

在这里插入图片描述
9.编写脚本,用chkconfig管理squid

[root@squid ~]# vi /etc/init.d/squid
[root@squid ~]# chmod +x /etc/init.d/squid   
[root@squid ~]# chkconfig --add /etc/init.d/squid  
[root@squid ~]# chkconfig --list  

#!/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)
     $COM -k parse    #检查语法
  ;;
*)
     echo "用法: $0{start|stop|status|restart|check|reload}"
esac

在这里插入图片描述
10.开启服务,查看端口状态

[root@squid ~]# systemctl stop squid   
[root@squid ~]# systemctl start squid  
[root@squid ~]# systemctl status squid  
[root@squid ~]# netstat -anpt | grep squid   

1.传统代理

1.修改配置文件

[root@squid ~]# vi /etc/squid.conf
添加
http_access allow all         #允许所有(按顺序执行,先允许后拒绝)
cache_mem 64 MB           #指定缓存功能所使用的内存空间大小,便于保持访问频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4  
reply_body_max_size 10 MB   #允许用户下载的最大文件大小,以字节为单位,默认设置0表示不进行限制
maximum_object_size 4096 KB   #允许保持到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户

在这里插入图片描述
2.检查语法,端口

[root@squid ~]# squid -k parse      #检查语法
[root@squid ~]# systemctl stop squid   
[root@squid ~]# systemctl start squid
[root@squid ~]# netstat -anpt | grep squid

在这里插入图片描述
3.关闭防火墙

[root@squid ~]# systemctl stop firewalld
[root@squid ~]# setenforce 0
[root@squid ~]# systemctl disable firewalld
[root@squid ~]# sed -i
'/SELINUX/s/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@squid ~]# grep -v "#" /etc/selinux/config 

代理开启,客户机可以访问web服务

设置web1服务器
1.安装软件

[root@web1 ~]# yum -y install httpd

2.创建网页

[root@web1 ~]# echo "<h1>This is Web1</h1>" > /var/www/html/index.html
[root@web1 ~]# systemctl start httpd
[root@web1 ~]# curl http://localhost

web2同上
1.安装软件

[root@web2 ~]# yum -y install httpd

2.创建网页

[root@web2 ~]# echo "<h1>This is Web2</h1>" > /var/www/html/index.html
[root@web2 ~]# systemctl start httpd
[root@web2 ~]# curl http://localhost

测试
客户机访问web服务器
192.168.1.11
192.168.1.12
在这里插入图片描述
在这里插入图片描述
3.查看web服务器上的日志

[root@web1 ~]# tail -f /var/log/httpd/access_log 

在这里插入图片描述

[root@web2 ~]# tail -f /var/log/httpd/access_log 

在这里插入图片描述
产生的日志都显示访问的地址是客户机地址

在客户机上设置代理服务器
打开浏览器–设置页面–首选项–高级–网络–连接设置
手动配置代理–http代理192.168.1.10端口3128

4.清除所有规则

[root@squid ~]# iptables -F             #清除所有规则
[root@squid ~]# iptables -I INPUT -p TCP --dport 3128 -j ACCEPT    #如防火墙关闭,运行3128端口通过

测试
再次用客户机访问web服务器
192.168.1.11
192.168.1.12
在这里插入图片描述
在这里插入图片描述

[root@web1 ~]# tail -f /var/log/httpd/access_log

在这里插入图片描述

[root@web2 ~]# tail -f /var/log/httpd/access_log

在这里插入图片描述
因为添加了代理服务器,只要访问的页面是原先已经访问过的页面已经存入代理服务器的缓存中,下一次访问原先的就不需要再发送请求给web服务器,代理服务器直接会返回请求,这样也减少了服务器的请求重复过多,减轻服务器压力

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值