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,一经查实,立即删除!

相关文章

Linux 应用服务

Part I: Linux 系统概述 什么是 LinuxLinux 的历史和版本Linux 发行版介绍Linux 的优缺点 Part II: Linux 安装与配置 5. 硬件要求与准备工作 6. 安装 Linux 操作系统 7. Linux 系统初始化设置 8. Linux 系统更新与升级 9. Linux 基础配置 Part III: Linux 命令行 10. Linux…

关于前端地图笔记

坐标系 地球坐标系——WGS84:常见于 GPS 设备,Google 地图等国际标准的坐标体系。火星坐标系——GCJ-02:中国国内使用的被强制加密后的坐标体系,高德坐标、腾讯地图。百度坐标系——BD-09:百度地图所使用的坐标体系&a…

如何创建NTP Server给本地局域网用

安装NTP Server sudo apt-get install ntp配置conf文件 sudo vimd /etc/ntp.conf# 允许本地网络的客户端访问,但是不允许本地机器修改server的时间 restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap启动服务 sudo service ntp start你可以使用以下命令来检…

[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…

安全认证 | CISP和CISSP区别是什么?考哪个好?

随着信息安全愈发受到重视,信息安全领域的证书也越来越多,其中比较权威的如CISP和CISSP证书是不少人的选择。 那么这两者之间到底有什么区别?究竟考哪个会比较好呢? 01 CISP是什么 CISP指的是注册信息安全专业人员,系…

阿里云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处理器在运行时可以收集关于处理器和内存的各种统计信息。对于处理器来说这些统计信息中…

【中间件】ElasticSearch:ES的基本概念与基本使用

ElasticSearch ElasticSearch基本概念 Index索引、Type类型&#xff0c;类似于数据库中的数据库和表&#xff0c;我们说&#xff0c;ES的数据存储在某个索引的某个类型中&#xff08;某个数据库的某个表中&#xff09;&#xff0c;Document文档&#xff08;JSON格式&#xff…

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

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

Zookeeper篇---第十二篇

系列文章目录 文章目录 系列文章目录一、说说 Zookeeper 的 CAP 问题上做的取舍?二、watch 监听为什么是一次性的?一、说说 Zookeeper 的 CAP 问题上做的取舍? 一致性 C:Zookeeper 是强一致性系统,为了保证较强的可用性,“一半以上成功即成功”的数据同 步方式可能会导致…

CSDN每日一题学习训练——Java版(分数到小数、罗马数字转整数、x 的平方根)

版本说明 当前版本号[20231114]。 版本修改说明20231114初版 目录 文章目录 版本说明目录分数到小数题目解题思路代码思路参考代码 罗马数字转整数题目解题思路代码思路参考代码 x 的平方根题目解题思路代码思路参考代码 分数到小数 题目 给定两个整数&#xff0c;分别表示…

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

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

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

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

Git取消git add命令

三种方法来取消git add命令-git-PHP中文网 亲测有效。

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…