反向代理缓存服务器 Squid 、Nginx、CDN部署讲解

news2025/1/10 2:15:01

目录

  • 一、Squid 反向代理
    • 1.1 概念
    • 1.2 工作机制
    • 1.3 搭建
  • 二、 Nginx 反向代理缓存

一、Squid 反向代理

1.1 概念

如果 Squid 反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将向后台的 Web 服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。

1.2 工作机制

  • 缓存网页对象,减少重复请求
  • 将互联网请求轮训或按权重分配到内网Web服务器
  • 代理用户请求,避免用户直接访问Web服务器,提高安全

1.3 搭建

vim /etc/squid.conf
......
--60行--修改,插入
http_port 192.168.80.10:80 accel vhost vport
cache_peer 192.168.80.11 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 192.168.80.12 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.kgc.com
#表示对www.kgc.com的请求,squid向192.168.80.11和192.168.80.12的80端口发出请求

----------------------------------------------------------------------------------------------------------
http_port 80 accel vhost vport #squid从一个缓存变成了一个Web服务器反向代理加速模式,这个时候squid在80端口监听请求,同时和web server的请求端口(vhost vport)绑定,这个时候请求到了squid,squid是不用转发请求的,而是直接要么从缓存中拿数据要么向绑定的端口直接请求数据。
accel :反向代理加速模式
vhost :支持域名或主机名来表示代理节点
vport :支持IP和端口来表示代理节点

parent :代表为父节点,上下关系,非平级关系
80 :代理内部web服务器的80端口
0 :没有使用icp(电信运营商),表示就一台squid服务器
no-query :不做查询操作,直接获取数据
originserver :指定是源服务器
round-robin :指定 squid 通过轮询方式将请求分发到其中一台父节点
max_conn :指定最大连接数
weight : 指定权重
name :设置别名
----------------------------------------------------------------------------------------------------------

//清空之前透明模式配置的 iptables 规则
iptables -F
iptables -t nat -F

systemctl stop httpd       #防止 httpd 服务使用的 80 端口号和 squid 反向代理配置的监听端口冲突
systemctl restart squid


#后端节点服务器设置
yum install -y httpd
systemctl start httpd

#节点1:
echo "this is test01" >> /var/www/html/index.html
#节点2:
echo "this is test02" >> /var/www/html/index.html


#客户机的域名映射配置
修改 C:\Windows\System32\drivers\etc\hosts 文件
192.168.80.10 www.kgc.com

浏览器不开启代理访问 http://www.kgc.com

查看缓存命中情况 
tailf /usr/local/squid/var/logs/access.log
1631164427.547      0 192.168.80.200 TCP_MEM_HIT/200 381 GET http://www.kgc.com/ - HIER_NONE/- text/html

在这里插入图片描述
在这里插入图片描述

二、 Nginx 反向代理缓存

http {
    proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
	
#####################################################
●path:强制参数,指定缓存文件的存放路径。
●levels:定义了缓存目录的层级。每层可以用1(最多16种选择,0-f)或2(最多256种选择,00-ff)表示,中间用 : 分隔。
proxy_cache_path /data/nginx/cache;  代表所有缓存只有一个目录,比如/data/nginx/cache/d7b6e5978e3f042f52e875005925e51b
proxy_cache_path /data/nginx/cache levels=1:2;  代表缓存是二层目录(有16*256=4096个目录),比如/data/nginx/cache/b/51/d7b6e5978e3f042f52e875005925e51b
●keys_zone:强制参数,定义共享内存区的名称和大小,该共享内存用于保存缓存项目的元数据(所有活动的key和缓存数据相关的信息),这样nginx可以快速判断一个request是否命中或者未命中缓存,1m可以存储8000个key,10m可以存储80000个key。
●inactive:删除指定时间内未被访问的缓存文件,默认10分钟。
●max_size:设置了缓存存储的上限,如果不指定,最大会用掉所有磁盘空间。
●use_temp_path:直接把临时文件放在缓存目录中。
#####################################################
    
    upstream cache_server{
        server 192.168.80.20:80;
        server 192.168.80.30:80;
    }
    
    server {
        listen 80;
        server_name www.kgc.com;
        location / {
            proxy_cache my_cache;               #指定用于页面缓存的共享内存,zone名称由proxy_cache_path指令定义
            proxy_cache_valid 200 5m;           #为不同的响应状态码设置不同的缓存时间,此为缓存状态码为200的请求,缓存时长为5分钟
            proxy_cache_key $request_uri;       #指定缓存文件的key为请求的URI
            add_header Nginx-Cache-Status $upstream_cache_status      #把缓存状态设置为头部信息,响应给客户端
            proxy_pass http://cache_server;     #设置代理转发的后端服务器的协议和地址
        }
    }
}



#对于一些实时性要求非常高的页面或数据来说,就不应该去设置缓存,下面来看看如何配置不缓存的内容。
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
server {
  listen 80;
  server_name cache.lion.club;
  #URI 中后缀为 .txt 或 .text 的设置变量值为 "no cache"
  if ($request_uri ~ \.(txt|text)$) {
   set $cache_name "no cache"
  }
  
  location / {
    proxy_no_cache $cache_name;      #判断该变量是否有值,如果有值则不进行缓存,如果没有值则进行缓存
    proxy_cache my_cache;            #设置缓存内存
    proxy_cache_valid 200 5m;        #缓存状态为200的请求,缓存时长为5分钟
    proxy_cache_key $request_uri;    #缓存文件的key为请求的URI
    add_header Nginx-Cache-Status $upstream_cache_status    #把缓存状态设置为头部信息,响应给客户端
    proxy_pass http://cache_server;  #代理转发
  }
}

在这里插入图片描述
在这里插入图片描述重启服务 拿客户端进行测试

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

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

相关文章

三者ICG聚甲基菁染料:ICG COOH,ICG NHS,ICG NH2,具有良好的水溶性

一、ICG-COOH--CAS号:181934-09-8 ICG-COOH(吲哚菁绿羧酸)中末端羧酸在活化剂(如EDC或HATU)存在下可与伯胺基反应,形成稳定的酰胺键。ICG是一种带负电荷的聚甲基菁染料,具有良好的水溶性&#…

远程服务器ubuntu安装Jupyter Lab详细教程

不用打开电脑,不用启动anaconda,随时随地,公交地铁上使用手机输入网站就能启动jupyter notebook进行代码编写、数据分析,着实是很方便。在你成功白嫖一台服务器之后,可以按照下面的教程,手把手教你配置一个…

car music

正常车载U盘即可 车载不可用的U盘 车载需要改进遍历文件夹

【机器学习核心总结】什么是BP反向传播算法

什么是BP反向传播算法 神经网络是个好工具,但就像有的刀削铁如泥,有的却只能拿来切豆腐。 真正决定神经网络好不好用的是神经元之间连接的权重和神经元的阈值。 如何确定这些数字,大部分时间我们都在使用反向传播,也就是常说的B…

Opencv图片样本预处理

前因 最近想学学,OPENCV识别物体,但是处理图片正样本时过于繁琐, 遂自己开发了工具,来处理样本图片,基于QT,文末附下载链接 程序 功能 一共有两个功能,一个是处理负样本,一个处理…

UE 5.1.1 引擎源码下载 执行Setup报错解决

Upcoming Disruption of Service Impacting Unreal Engine Users on GitHub - Announcements - Epic Developer Community Forums 文件下载地址:https://github.com/EpicGames/UnrealEngine/blob/9763f4c8f3fb047be1a4b5fee2b080587c1307a1/Engine/Build/Commit.gi…

React之hooks

Hooks函数 1.useState():状态钩子。纯函数组件没有状态,用于为函数组件引入state状态, 并进行状态数据的读写操作。 const [state, setState] useState(initialValue); // state:初始的状态属性,指向状态当前值,类似…

字节测试8年,肝到50W就剩这份学习笔记了····

在字节工作了8年,工作压力大,节奏快,但是从技术上确实得到了成长,尤其是当你开发框架与平台的时候,熬到年薪50W也费了不少心思,小编也是个爱学习的人,把这几年的工作经验整理成了一份完整的笔记…

如果你的idea启动突然卡住,那么请看我这篇文章

# 情景 我的idea什么操作都没做就突然运行不起来了,其他的操作都可以,只要运行就卡住1、不要相信网上文章的修改本机hosts文件 2、不要相信网上文章清理idea的cache 3、不要相信网上文章修改编译配置# 操作 只有两张图,如下

测试用例设计简单吗?简单!但你有可能栽在这5道S级设计题上!

很多人不知道写测试用例有什么用,而仅仅是像工具人一样,在每次提测之前,把测试用例照着需求文档抄一遍,仿佛像是走个过场。 开发提测之后,就照着测试用例点点点,可能一天就走完用例了,开发代码…

antv/g2图表自定义tooltip展示

默认图 效果图 需要自定义tooltip标题以及根据是字段显示名称和数值 chart.interval().transform({ type: stackY }).data(dataList).encode(y, value).encode(color, name).tooltip({title: (d) >办理状态, //标题设置}).tooltip((d, // 每一个数据项index, // 索引data…

首家!阿里云完成数据可视化服务能力评估

2023 年 5 月 22 日,在中国信通院组织的首批数据可视化服务能力成熟度评估中,阿里云计算有限公司(以下简称“阿里云”)顺利完成了数据可视化服务能力成熟度评估的全部内容,成为首家完成此评估的企业。 标准介绍 中国…

想知道好用的音频翻译软件有哪些?

随着全球化进程的加速和语言交流需求的增长,音频翻译软件正日益受到关注和应用。这样的软件以其高效、准确的翻译能力以及广泛的应用场景赢得了青睐。音频翻译软件具备诸多优势,如通过语音输入实时转化为文字输出,提供了便捷的写作工具&#…

[每日一水] Latex Tikz foreach 循环嵌套

\documentclass{article} \usepackage{tikz} \begin{document} \begin{tikzpicture} \foreach[count\i] \x in {20,18,...,2}\foreach[count\j] \y in {20,18,...,2}\node at (\i,\j) {\x \y}; \end{tikzpicture} \end{document}\node at (\i,\j) {\x \y}; 就是写文本的意思

Linux——统信UOS(v20-1060a)部署.net core项目

部署.net core之前,请先确定已经安装了运行环境 Linux安装.net core环境 新建一个用于测试的 .net core web 项目 直接发布到文件夹,目标运行时选择 linux-64,这里根据你自己的操作系统的运行环境选择。 先点击完成,后面再设置参…

2023容器网络趋势:CNI网络插件逐渐普及,Kube-OVN受欢迎度持续攀升

今年,Kube-OVN 社区联合OSCHINA、云原生社区共同发起了《2022-2023容器网络使用情况调研》,得到了大批K8s/容器网络技术人员的关注。 本调研旨在更加直观地了解各行业企业容器网络的使用现状,以及Kube-OVN在社区用户中的使用情况,…

【机器学习核心总结】什么是CNN(卷积神经网络)

什么是卷积神经网络 卷积神经网络(Convolutional Neural Network),在一个个填充着数字的正方形小格子,它们被称为卷积核。 原始图片经过输入层后,会变为灰度或是RGB数值填充的矩阵 将卷积核与图片矩阵对齐,对应格子中的数字相乘后…

DAY38:贪心算法(五)K次取反后最大数组和+加油站

文章目录 1005.K次取反后最大化的数组和思路直接升序排序的写法最开始的写法:逻辑错误修改版时间复杂度 自定义sort对绝对值排序的写法sort的自定义比较函数cmp必须声明为static的原因std::sort升降序的问题(默认升序)时间复杂度 总结 134.加…

C# 超过经理收入的员工

181 超过经理收入的员工 SQL架构 表:Employee -------------------- | Column Name | Type | -------------------- | id | int | | name | varchar | | salary | int | | managerId | int | -------------------- Id是该表的主键。 该表的每一行都表示雇员的ID、…

pip安装opencv-python不成功

一个比较笨但还算有效的方法:如果你的python版本较低,如现在2023-07-04使用python3.6环境,使用pip默认安装会是最新的4.8.0.7版本,但事实上这个版本不支持py3.6环境,所以你需要去这里查支持py3.6的最近的一个版本是什么…