nginx(七十五)nginx与Vary响应头细节探讨

news2024/10/7 15:25:30

一  Vary

①  nginx与Vary有关联的地方

nginx源码分析处理Vary响应头的逻辑

CORS和缓存

gzip_vary

1) gzip_vary on 如果设置为'开启'

2) 服务器'返回数据'时会在头部带上"Vary:Accept-Encoding"的标识

3) 客户端便可以知道获取到的数据'是否已经被压缩',默认为'关闭'

proxy_cache_valid

proxy_ignore_headers  相关参考

  

②  CDN与Vary

不同CDN厂商的Vary实现不标准导致跨域不生效

华为云CDN不支持自定义Vary响应头设置

腾讯云CDN Vary特性当前处于恢复支持

③  Vary细节

Vary: Accept-Encoding, User-Agent, Referer  --> 多个'请求头'逗号分割

Vary: User-Agent                            --> 'PC和手机端'

Vary: Accept-Encoding                       --> '观察Content-Length'是否压缩传输

备注: 多个'头部',多个'请求头'的值共同作为'缓存'条件

④   如何通过Vary命中缓存

1) 他们一般以'proxy_cache_key'为key值进行缓存;

2) Vary属性的设置,告诉'缓存服务器'根据proxy_cache_key和Vary响应头中的请求头值共同作为key

  

案例1说明: 非'缓存'应用,而是是否进行'压缩'

  1) 浏览器请求的信息里带上了Accept-Encoding:gzip 则返回'压缩'副本

  2) 如果没有带这个头信息,默认返回'非压缩'副本。

HTTP报文头加上Vary让CDN缓存不同版本 

案例2: 虽然'proxy_cache_key'相同,但是'不同的agent'客户端访问,第二次没有'命中'

请求流: client --> nginx '缓存服务器'  --> 源站 '设置 Vary: User-Agent'

  验证1: add_header HIT_CACHE "$upstream_cache_status"

     效果:第一个客户端访问之后,第二个客户端'相同url'第一次访问没有命中,从源站获取资源

  验证2: 第一个客户端同一个'url'访问之后,更新'源站'资源,然后第二个客户端'相同url'第一次访问

     效果:第二个客户端'第一次'访问直接'获取更新的资源'

案例3: Vary: Origin,Accept-Encoding

  场景: 'CORS',不同'Origin'访问同一资源,都会从'源站'获取资源

⑤  Vary参考连接

nginx隐藏Vary头信息

Is it safe to use proxy_ignore_headers Vary?

nginx源代码分析Vary机制

Vary最佳实践

代理的Vary首部压缩

nginx源码分析处理Vary响应头的逻辑

由于上游返回Vary头,以及nginx开启gzip_vary指令,导致客户端收到重复Vary头

Caching of Access-Control-Allow-Origin value cross-site

记一场由Vary引发的风波---案例篇

请求流: Client-->CDN-->代理源站-->真正源站

根因: 代理源站'没有透传'真正源站的'Vary header'给CDN

⑥  杂谈

1.gzip_static配置优先级高于gzip 
2.开启nginx_static后,对于任何文件都会先查找是否有对应的gz文件 
3.gzip_types设置对gzip_static无效 

nginx如何处理缓存

nginx缓存优先级

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

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

相关文章

ros获取typec-usb摄像头

确保usb或者typec摄像头插在主机上,我这里是typec摄像头,使用了一个usb-typec转接头。 windows在设备管理器中查看是否存在端口,如果没有,可以使用下面的软件进行尝试。 链接:https://pan.baidu.com/s/1hxp3m68W6NjY-3D7q8rGnA 提…

Linux线程同步(1)——一个例子看懂为什么需要线程同步?

对于一个单线程进程来说,它不需要处理线程同步的问题,所以线程同步是在多线程环境下需要注意的问题。线程的主要优势在于,资源的共享性,譬如通过全局变量来实现信息共享,不过这种便捷的共享是有代价的,那就…

postman处理各种请求数据

1、后台request接收postman参数 2、后台单个参数接收postman 3、后台RequestParam参数接收postman 注意事项:情况一:全部都是单个字符串的 情况二:有可能是一个json对象序列化成字符串过来的,那么需要在form-data中设置 …

区间预测 | MATLAB实现QRCNN-LSTM卷积长短期记忆神经网络分位数回归时间序列区间预测

区间预测 | MATLAB实现QRCNN-LSTM卷积长短期记忆神经网络分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRCNN-LSTM卷积长短期记忆神经网络分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于QRCNN-LSTM分位数回…

Elasticsearch:如何在 Elasticsearch 中存储复杂的关系数据

在传统的数据库中,对数据关系的描述无外乎三种:一对一、一对多和多对多关系。 如果有关系相关的数据,我们一般在建表的时候加上主外键。 建立数据链接,然后在查询或者统计中通过 join 恢复或者补全数据,最后得到我们需…

Springboot +Flowable,设置流程变量的方式(二)

一.简介 为什么需要流程变量。 举个例子,假设有如下一个流程,截图如下: 这是一个请假流程,那么谁请假、请几天、起始时间、请假理由等等,这些都需要说明,不然领导审批的依据是啥?那么如何传递…

软件测试面试宝典,最常见的7个高频面试题(附答案,建议收藏)

收集了2022年所有黑马学员的面试题后,负责就业的黑马讲师们整理出了7个高频出现的面试题,一起来看看。 高频问题1:请自我介绍下? 高频问题2:请介绍下最近做过的项目? 高频问题3:请介绍下你印象…

2023 年第三届长三角高校数学建模 A 题 快递包裹装箱优化问题

2022 年,中国一年的包裹已经超过 1000 亿件,占据了全球快递事务量的一 半以上。近几年,中国每年新增包裹数量相当于美国整个国家一年的包裹数量, 十年前中国还是物流成本最昂贵的国家,当前中国已经建立起全世界最强大、…

利用jQuery做一个简单的猜数字游戏

目录 利用jQuery做一个简单的猜数字游戏 代码 效果 利用jQuery做一个简单的猜数字游戏 代码 <!DOCTYPE html> <html><head><title>键盘事件-猜数字</title><style>#body_style {background-color: #c7f5db;}#myDiv {position: absolu…

单片机GD32F303RCT6 (Macos环境)开发 (十七)—— i2c1从机中断接收发送数据

i2c1从机中断接收发送数据 1、将i2c1设置为从机模式&#xff0c;与树莓派连接。树莓派发送或者读取数据&#xff0c;gd32中断触发&#xff0c;从而接收数据或者向主机发送数据。 2、关于代码的宏定义配置 Application目录的Makefile中 ENABLE_I2C_TEST yes才会编译I2C1的相关…

为啥马斯克一边反对Open AI,一边又自己另搞AI

这事我过去就说过&#xff0c;我现在再老生常谈一次。 &#xff08;1&#xff09; 我过去说过一个事&#xff1a;汽车自己智能其实还不能做到真正的智能&#xff0c;必须车路人都智能了&#xff0c;智能汽车才能真正智能。 因为车路人智能&#xff0c;这本质是数字世界和数字世…

开源之夏 2023 | 与 Databend 一同探索云数仓的魅力

活动概览 开源之夏是由中科院软件所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动&#xff0c;旨在鼓励在校学生积极参与开源软件的开发维护&#xff0c;培养和发掘更多优秀的开发者&#xff0c;促进优秀开源软件社区的蓬勃发展&#xff0c;助力开源软件供应链…

基于AT89C52单片机的交通信号灯设计

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/87772657 源码获取 主要内容&#xff1a; 本次设计所提出的一种基于单片机技术的简易计算器的方案&#xff0c;能更好的解决计算机计算的问题,随着数字生活的到来&…

eSIM-GSMA-1-EID规则定义

规范 SGP.02-v4.0.pdf Official Document SGP.02 - Remote Provisioning Architecture for Embedded UICC Technical Specification eid管理规则-SGP.29-1.0 EID Principles 国家编号机构发布 ICCID 的现有机制&#xff0c;以及后续的用户识别不受影响 EID 的核心目的是唯…

知识管理协同工具:助力企业综合信息规整化发展

随着信息化时代的来临&#xff0c;企业面临的信息越来越庞杂&#xff0c;如何管理和利用这些信息成为了企业发展的关键。知识管理作为一种新型的管理思想和方法&#xff0c;已经被广泛应用于企业管理中。知识管理工具是知识管理的重要手段之一&#xff0c;它可以帮助企业实现信…

STM32的功耗模式

按功耗由高到低排列&#xff0c; STM32 具有运行、睡眠、停止和待机四种工作模式。 低功耗各模式下芯片工作情况&#xff1a; 睡眠模式&#xff1a;仅关闭了内核时钟&#xff0c;内核停止运行&#xff0c;但其片上外设&#xff0c; CM4 核心的外设全都还照常 运行。有两种方式…

一款开源免费、非常好用的的SSH/SFTP客户端Electerm

electerm是一款基于electron开发的SSH/SFTP客户端&#xff0c;同时支持Linux、MAC、Windows操作系统&#xff0c;免费开源。 下载地址 Releases electerm/electerm (github.com) 点击下图箭头所指&#xff0c;下载windwos版本 安装 双击安装&#xff0c;等待安装完成 使用…

Melis4.0[D1s]:8.显示测试:图片格式和透明度

文章目录 1.准备素材图片1.1 测试图片像素格式的软件RawViewer.exe1.1.1 使用方法 1.2 自己生成测试图片 2.D1s显示引擎介绍&#xff08;不保证正确&#xff09;2.1 D1s 可以有2个独立的display device输出&#xff08;可以同时接2个显示器&#xff09;2.2 D1s 的 DISP0 有2个通…

普罗米修斯-docker安装

prometheus 监控原理 1、prometheus &#xff1a;虽然说是监控平台&#xff0c;但是实际上是一套数据库 2、mysql_exporter: 可以理解成程序或者软件&#xff0c;他是工作在我们要监控的目标服务器上&#xff0c;主要是用于监控mysql的数据。 3、node_exporter: 他的作用主要是…

Java 3种IO模型,一次搞懂

大家好&#xff0c;我是老三&#xff0c;上一节我们讨论了Linux的五种IO模型&#xff0c;接下来&#xff0c;我们从Java语言层面&#xff0c;来看看对IO的实现。 在Java中&#xff0c;一共有三种IO模型&#xff0c;分别是阻塞IO(BIO)、非阻塞IO(NIO)和异步IO(AIO)。 Java BIO …