squid代理服务器

squide是正向代理,缓存加速。基于aci访问控制协议。可以过滤控制。可以实现访问控制

squid代理的工作机制

nginx是转发

1、 squid是代替客户端向网站请求数据,不需要访问代理的ip地址。直接请求目的网站即可。由代理服务器处理请求和响应。squid也可以隐藏用户的真实ip地址

2、 客户端访问目标网站之后(静态web元素)保存到缓存中,发送给客户端。下一次所有的客户机都可以使用缓存访问。可以加快访问速度。

squid代理服务器的数据流向和工作架构图:

squid代理的作用

1、 资源获取:代替客户端获取目标服务器的资源

2、 加速访问:代理服务器可能和目标服务器距离更近,可以起到一定的加速作用。

3、 缓存作用:代理服务器获取到之后保存从目标服务器获取的资源。客户端下一次再请求目标服务器访问缓存即可。可以减轻目标服务器的压力。

4、 隐藏真实的ip地址:代理服务器代替客户端请求,客户端的信息不会显示。

nginx没有加速访问功能

squid代理的类型

1、 传统代理也是VPN的工作方式。正向代理。需要在客户端上指定好客户端的地址和端口。

2、 透明代理。客户端不再需要指定代理服务器的地址和端口,而是通过默认路由来进行转方法。配置在末梢网络上由默认路由转发所有流量。(squid服务器,网关)

3、 反向代理:在反向代理的squid服务器当中缓存了请求资源,将资源直接返回给客户端。否则代理服务器会继续代理客户端向web服务器发起请求。请求之后然后再把请求的资源响应给客户端。同时把响应缓存在本地,后续请求者都可以使用。

有缓存则直接响应缓存内容,没有缓存,才会代替客户端请求web资源,响应的结果保存在缓存,然后响应给客户端,下一次直接访问缓存即可。缓存是否命中。

SNAT和DNAT和squid代理服务器有什么区别

SNAT和DNAT:工作在网络层。走的是数据包会改变数据包头部的源IP地址和目的地址

squid代理服务器:工作在应用层。不会改变数据包的任何信息,是直接把数据包发给代理。代理通过应用层过滤的方式来实现转发。(通过应用层的ACL的方式来过滤,类似于路由器转发的工作过程)

实验过程

准备四台主机

客户端:20.0.0.10

squid:20.0.0.20 (透明代理会用到双网卡)

web页面:nginx1 20.0.0.30

web页面:nignx2 20.0.0.40

关闭防火墙
在代理上配置
cd /opt
拖入安装包进行解压
tar -xf squid
yum -y install gcc gcc-c++ make
#安装依赖环境
进入目录开始编译
./configure --prefix=/usr/local/squid \ --sysconfdir=/etc \ 
#配置文件路径 
--enable-arp-acl \ 
#开启acl过滤模式 
--enable-linux-netfilter \ 
#开启内核过滤 
--enable-linux-tproxy \ 
#支持透明模式 
--enable-async-io=100 \ 
#异步IO 
--enable-err-language="Simplify_Chinese" \ 
#错误信息的显示语言 
--enable-underscore \ 
#允许URL地址中含有下划线 
--disable-poll \ 
--enable-epoll \ 
--enable-gnuregex
make && make install
#编译安装
ln -s /usr/local/squid/sbin/* /usr/local/sbin/
#开始创建软连接
useradd -M -s /sbin/nologin squid
#创建用户
chown -R squid:squid /usr/local/squid/var/
#修改归属vim /etc/squid.conf
配置文件的匹配规则,自上而下匹配。匹配到了之后,不再向下匹配
56行插入一行
http_access allow all
61行插入两行
cache_effective_user squid
cache_effective_group squid
68行
usr/local/squid/var
squid -k parse
#检测配置文件是否正确
squid -z
#初始化squid
完成回车即可
squid
netstat -antp | grep squid
#查一下端口端口起来就代表ok了
squid -N -d1
#检测运行过程是否正常
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" instart)netstat -natp | grep squid &> /dev/nullif [ $? -eq 0 ]thenecho "squid is running"elseecho "正在启动 squid..."$CMDfi;;stop)$CMD -k kill &> /dev/nullrm -rf $PID &> /dev/null;;status)[ -f $PID ] &> /dev/nullif [ $? -eq 0 ]thennetstat -natp | grep squidelseecho "squid is not running"fi;;restart)$0 stop &> /dev/nullecho "正在关闭 squid..."$0 start &> /dev/nullecho "正在启动 squid...";;reload)$CMD -k reconfigure;;check)$CMD -k parse;;*)echo "用法:$0{start|stop|status|reload|check|restart}";;
esacchmod +x /etc/init.d/squid
#给运行权限
chkconfig --add squid
#添加进系统运行
chkconfig --level 35 squid on
#定义运行级别。启动启动的优先级
systemctl restart squid
netstat -antp | grep squid实验1传统代理
vim /etc/squid.conf
设置缓存文件大小
到62行插入
cache_mem 2000 MB
#指定缓存功能使用的内存空间大小,容量最好是4的倍数。单位是MB建议是内存容量的4分之一
reply_body_max_size 100 MB
#允许用户下载的最大文件的大小。如果超过了这个值,浏览器会提示请求或访问太大
maximum_object_size 100 MB
#能够缓存的对象的最大值。超过这个单位不会被缓存。超过这个值,直接返回给用户
iptables -I INPUT -p tcp --dprot -j ACCEPT
#生产中需要给放行,这里不需要tail -f /usr/local/squid/var/logs/access.log进入虚拟机
开启nginx功能
vim /html/index.html
this is squid!到客户端打开浏览器测试
在浏览器中配置代理
写入代理服务器的ip和端口回到nginx1
tail -f /usr/local/nginx/
打开访问日志回到客户端测试

实验1传统代理结果

实验2透明代理

实验2:透明代理
回到客户端清除缓存
选择不需要代理
回到squid主机设置为双网卡
web 12.0.0.12
双网卡分别指向网关
vim ifcfg-ens33
注释掉网关和dns
ifconfig查看一下
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36
ip地址修改为网关
网关和dns都注释掉
重启网卡
ifconfig查看一下到nginx1
vim ifcfg-ens33
修改网关为12.0.0.254
IP地址改为12.0.0.12
注释掉dns
重启网卡回到squid主机
开启转发功能
vim /etc/systcl.conf
net.ipv4.ip_forwart=1
#开启转发功能
sysctl -p 
vim /etc/squid.conf
注释掉原端口插入新的端口
http_port 20.0.0.20:3128 transparent
#加上支持透明的选项
重启squid服务
修改一下防火墙的规则
iptables -t nat -I PREOUTING -i ens33 -s 20.0.0.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
iptables -t nat -I PREOUTING -i ens33 -s 20.0.0.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
#允许这个端口通过回到客户端测试
修改一下客户机的网关
把网关指向20.0.0.20
注释掉dns
到客户机测试

实验2透明代理结果

透明代理:

1、 配置文件写错了,重启不会有任务报错

2、 添加了ip加端口之后一定要查看一下ip+端口是否生效

3、 客户端和服务端都要指向网关

4、 iptables的策略,在代理服务器要配置,开启转发功能

实验3:配置ACL访问控制策略vim /etc/squid.conf
acl myhost1 src 20.0.0.10/32
http_access deny myhost1
重启squid服务
squid -N -d1
#检测一下运行状态实验4:访问列表
mkdir /etc/squid
cd /etc/squid
vim dest.list
12.0.0.12
vim /etc/squid.conf
添加策略
acl myhost2 dst "/etc/squid/dest.list"
http_access deny myhost2
重启一下squid服务
到客户端测试一下
取消掉deny再去客户端测试一下

配置ACL访问控制策略禁止访问12.0.0.12

解除限制

反向代理

实验5:反向代理在squid主机
vim ifcfg-ens33
#打开网关和dns还原一下nginx主机
关闭防火墙和安全机制
vim /nginx/html/index.html到客户端修改一下网关和dns回到squid主机
iptables -F
#清空防火墙策略
vim /etc/squid.conf
http_port 20.0.0.20:80 accel vhost vport
#squid从一个缓存变成了一个web服务器的反向代理的加速模式 squid监听的80端口的请求。同时和web服务器的请求端口绑定。squid不是转发请求,要么从缓存获取数据,要么直接请求绑定的web端口
accel:反向代理开启加速模式
vhost:支持域名或主机名表示代理节点。
vport:支持ip+端口来表示代理服务器
在行后插入
cache_peer 20.0.0.30 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 20.0.0.4 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer 20.0.0.30
#获取失败,请求的服务器名
parent
#下级关系。80
0
#示就是一台代理服务器,不涉及运营商
no-query
#查询,直接获取数据
originserver
#定源服务器
round-robin max_conn=30 weight=1 name=web1
#squid通过轮询的方式将请求分发到其中一台父节点
max_conn=30
#最大连接数
weight=1
#轮询权重
name=web1
#设置别名
cache_peer_domain web1 web2 www.kgc.com
重启squid服务
squid -N -d1
#查看运行是否正常
netstat -antp | grep 80
#必须是80端口
如果80端口没有起来使用kill命令清除后再尝试
kill -9 68270在客户端把代理地址做映射
vim /etc/hosts
20.0.0.20
#做映射

实验5反向代理结果

实验完成 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/143095.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Mac软件]Adobe Media Encoder 2024 V24.0.2免激活版

软件说明 使用Media Encoder,您将能够处理和管理多媒体。插入、转码、创建代理版本,并几乎以任何可用的格式输出。在应用程序中以单一方式使用多媒体,包括Premiere Pro、After Effects和Audition。 紧密整合 与Adobe Premiere Pro、After …

WebRTC简介及使用

文章目录 前言一、WebRTC 简介1、webrtc 是什么2、webrtc 可以做什么3、数据传输需要些什么4、SDP 协议5、STUN6、TURN7、ICE 二、WebRTC 整体框架三、WebRTC 功能模块1、视频相关①、视频采集---video_capture②、视频编解码---video_coding③、视频加密---video_engine_encry…

保护数字前沿:下一代防火墙如何塑造网络安全的未来

下一代防火墙通过提供先进的威胁检测、精细控制和云安全功能,正在重塑网络安全的未来。随着数字环境的不断发展,组织必须采用这些创新解决方案来保护其数字资产并维护安全的数字前沿。 在当今互联的世界中,网络威胁变得越来越复杂&#xff0c…

阿里云ACK(Serverless)安装APISIX网关及APISIX Ingress Controller

在k8s上安装apisix全家,通过helm安装很简单,但是会遇到一些问题。 安装 首先登录阿里云控制台,在ACK集群详情页,进入CloudShell,执行下面helm命令安装apisix、apisix-ectd、apisix-dashboard和apisix-ingress-contro…

第1关:构造函数与析构函数的实现

题目&#xff1a;根据.h写出.cpp 考点&#xff1a; 1.链表的默认构造&#xff0c; 拷贝构造&#xff0c;传参构造以及析构函数等。 代码&#xff1a; /********** BEGIN **********/ #include <cstdlib> #include <cstring> #include "LinkedList.h&…

ARM PMU

PMU单元概览 ARM PMU概要 PMU作为一个扩展功能&#xff0c;是一种非侵入式的调试组件。 对PMU寄存器的访问可以通过CP15协处理器指令和Memory-Mapped地址。 基于PMUv2架构&#xff0c;A7处理器在运行时可以收集关于处理器和内存的各种统计信息。对于处理器来说这些统计信息中…

AI:83-基于深度学习的手势识别与实时控制

🚀 本文选自专栏:人工智能领域200例教程专栏 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的代码,详细讲解供大家学习,希望可以帮到大家。欢迎订阅支持,正在不断更新中,…

【Linux奇遇记】我和Linux的初次相遇

&#x1f308;个人主页: Aileen_0v0 &#x1f525;系列专栏:Linux奇遇记系列专栏&#x1f4ab;"没有罗马,那就自己创造罗马~" 目录 前端和后端的介绍 1.前端 2.后端 3.前后端区别 Linux在前后端开发中的角色 如何学习Linux 去进行程序开发 Linux的常见根目…

爆款元服务!教你如何设计高使用率卡片

元服务的概念相信大家已经在 HDC 2023 上有了很详细的了解&#xff0c;更轻便的开发方式&#xff0c;让开发者跃跃欲试。目前也已经有很多开发者开发出了一些爆款元服务&#xff0c;那么如何让你的元服务拥有更高的传播范围、更高的用户使用率和更多的用户触点呢&#xff1f;设…

MySQL 索引事务

MySQL 索引&事务 文章目录 MySQL 索引&事务1. 索引1.1 概念1.2 作用1.3 使用场景1.4 使用 2. 事务2.1 为什么使用事务2.2 事务概念2.3 事务的特性2.4 使用 1. 索引 1.1 概念 索引(index)是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针。可以对表中的…

学好Python-新手小白如何做?

新手小白如何学好Python?有哪些参考方法吗?这是一个老生常谈的话题了。今天为大家带来两位前辈的分享&#xff0c;他们给出了非常实用的方法和思路&#xff0c;希望对你有所帮助。 1、多练&#xff0c;两个字&#xff1a;多练 如果真的要说方法可以参考如下&#xff1a; ①…

排查线程阻塞问题

案例代码 package first;import java.util.concurrent.TimeUnit;public class DeadLock {private static volatile Object lock new Object();public static void main(String[] args) {new Thread(() -> {test1();}).start();new Thread(() -> {test2();}).start();}p…

centos下安装mysql8版本

1、如果服务器没有wget&#xff0c;先下载wget工具 sudo yum install wget 2、下载指定mysql版本的tar包 sudo wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.21-1.el7.x86_64.rpm-bundle.tar 3、解压tar包 sudo tar -xvf mysql-8.0.21-1.el7.x86_64.rpm…

《QT从基础到进阶·二十四》按钮组QButtonGroup,单选框QRadioButton和多选框QCheckBox

1、按钮组QButtonGroup 如果有多个单选按钮&#xff0c;可以统一放进一个按钮组。 图中有三个单选按钮放进了一个QGroupBox,并且设置了水平布局&#xff0c;现在要将这三个单选按钮放进一个按钮组&#xff0c;之前的想法是先把三个按钮加入按钮组&#xff0c;再把按钮组放进QG…

MATLAB中uiresume函数用法

目录 语法 说明 示例 按下按钮后恢复执行 使用函数调用恢复执行 uiresume函数的功能是恢复暂停程序的执行。 语法 uiresume uiresume(f) 说明 uiresume 恢复与当前图窗 (gcf) 关联的对应 uiwait 调用暂停的程序执行。 uiresume(f) 恢复与图窗 f 关联的对应 uiwait 调用…

开发企业微信群机器人,实现定时提醒

大家好&#xff0c;我是鱼皮&#xff0c;今天分享一个用程序解决生活工作问题的真实案例。 说来惭愧&#xff0c;事情是这样的&#xff0c;在我们公司&#xff0c;每天都要轮流安排一名员工&#xff08;当然也包括我&#xff09;去楼层中间一个很牛的饮水机那里接水。但由于大…

【杂谈】体验AI帮助编写代码,有提升效率,AI本身提升空间也很大

体验AI帮助编写代码 ​专栏内容&#xff1a; 手写数据库toadb 本专栏主要介绍如何从零开发&#xff0c;开发的步骤&#xff0c;以及开发过程中的涉及的原理&#xff0c;遇到的问题等&#xff0c;让大家能跟上并且可以一起开发&#xff0c;让每个需要的人成为参与者。 本专栏会定…

租用服务器带宽类型应用

服务器带宽类型多样&#xff0c;以满足不同行业的需求。本文将介绍香港常见的服务器带宽类型及其应用领域。 1. 共享带宽 共享带宽是指多个用户共同使用同一台服务器的带宽资源。这种带宽类型适用于小型企业或个人网站&#xff0c;因为其成本较低。由于多个用户共享带宽资源&…

Java的XWPFTemplate word生成列表

Java的XWPFTemplate工具类导出word.docx的使用_xwpftemplate 语法_youmdt的博客-CSDN博客 如果是表格的列表参考上面这篇文章即可&#xff0c;比较复杂的列表遍历暂时还没找到方法&#xff0c;只能手动创建表格了 上面是模板&#xff0c;非常简单&#xff0c;以为我们是要自己创…

HTTP 常见的请求头

面试官&#xff1a;说说 HTTP 常见的请求头有哪些? 作用&#xff1f; 一、是什么 HTTP头字段&#xff08;HTTP header fields&#xff09;,是指在超文本传输协议&#xff08;HTTP&#xff09;的请求和响应消息中的消息头部分 它们定义了一个超文本传输协议事务中的操作参数 …