nginx(七十六)nginx与HTTP请求行的深入探讨

news2024/11/28 8:41:49

一   nginx与请求行相关

nginx处理来自客户端的HTTP请求行和请求头

①  关于请求行的变量

   

$request= '$request_method' SP '$request_uri' SP '$server_protocol'

++++++++++++++ "案例讲解" ++++++++++++++

  

②  nginx作为服务端接收关于method控制

1) 请求方法和'支持的协议版本'包含如下:  -->'协议协商导致的'

 [1] GET、HEAD、POST 它们都支持HTTP'1.0/1.1'

 [2] PUT、DELETE、CONNECT、OPTIONS、TRACE、PATCH 它们'只支持HTTP1.1'

2) ngx_http_core_module.c看nginx支持'哪些method'

说明:'没有'限制,默认'全支持',与'RFC HTTP'协议跟随

limit_except

3) 案例: 限制'除了'GET HEAD POST'外'的所有'谓词(method)' --> 只'允许'GET HEAD POST

limit_except GET POST {
    deny  all;
}

4) if和$request_method的'结合'限制'请求'方法 --> "作用域更广"

if ($request_method !~* 'GET|POST|HEAD|PUT|OPTIONS') {
         return 404;
}

 301、302、307、308重定向

5) '302|302'重定向导致非'GET'请求变成'GET'请求,并且'request_body'丢失

   推荐使用:'307临时'、'308永久'

③  nginx作为反向代理转发proxy相关的请求行

修改发往上游的请求

1) proxy_method        --> 改变作为'反向代理角色nginx'的转发'请求'方法

proxy_method

2) 通过'location、proxy_pass、rewrite'改变作为'反向代理角色nginx'转发'request_uri'

  [1]、如果带proxy_pass带'attach_url',nginx会'解码后'进行透传,而不是'编码'原样透传

  [2]、通过rewrite的'?'可以进行'args'参数调整

proxy_pass  rewrite

​3) proxy_http_version  --> 改变作为'反向代理角色nginx'的转发'请求'协议

 

4) proxy_next_upstream non_idempotent --> 关于'幂等请求方法'的

解释: 为什么默认'GET'请求会'重试与上游另外服务器'建立连接,'POST'不会

proxy_next_upstream 

  

proxy_cache_methods 

 

proxy_cache_key

proxy_cache_convert_head 

+++++++++++++++ "以下与缓存相关的" +++++++++++++++

1) proxy_cache_methods --> 哪些请求方法的响应'会被缓存'

2) proxy_cache_key     --> 默认'没有指明'请求方法,所以不同请求方法都'命中' 'GET|HEAD'

3) proxy_cache_convert_head on

解读: 会将'HEAD请求'变成GET请求,并且缓存的是GET的response,而'不是'HEAD的response

补充: 这个配置'默认开启',即默认情况下会启用'HEAD方法转换为GET方法'进行缓存

④  跨域涉及请求方法

预检请求是'浏览器'行为,所以F12可以直接看到,Chrome浏览器中type为'preflight'

nginx 跨域踩坑及解决--OPTIONS请求处理

OPTIONS方法细讲

nginx源码分析  nginx子请求的源码分析

⑤  题外话

lvs配置persistence_timeout 参数导致lvs的rr负载不生效,负载不均衡

nginx官网配置websocket

CDN开启回源跟随导致301跳转地址栏没有发生变化 -->没有返回预期的Location

nginx使用keepalive复用tcp连接,提升性能

漫谈获取客户端真实ip

nginx运维开发宝典

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

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

相关文章

离线安装apisix

公司部分机器因为某些原因无法联网,只能离线安装apisix,折腾了很久,走了很多弯路,记录一下安装过程。 下载所有的包 安装epel源 sudo yum install epel-release在home下创建文件夹/apisix-dependence 下载apache-apisix-repo以…

chatgpt赋能Python-mac上的python

在Mac上使用Python编程的好处 作为一名有10年Python编程经验的工程师,我必须说Mac是一个出色的编程工作台。Mac操作系统本质上就是一个整合了各种开发工具的平台,为Python编程提供了很好的支持。这篇文章将介绍在Mac上使用Python编程的好处。 简单易用…

VOSviewer安装、环境配置及中英文文献的分析

VOSviewer介绍: VOSviewer是一个用于构建和可视化文献计量网络的软件工具。例如,这些网络可能包括期刊、研究人员或单个出版物,它们可以基于引文、书目耦合、共同引用或共同作者关系构建。VOSviewer 还提供文本挖掘功能,可用于构…

总线(计组)

概概述 基本概念 1、总线:是构成计算机互联的机构,是多个系统功能部之间进行数据传输的公共通路 2、总线的分类: 内部总线、系统总线、IO总线 内部总线:cpu连接寄存器及各运算部件的总线 系统总线:cpu连接其他高速功…

Typora的自定义主题

Typora的自定义主题 修改我们的Typora主题1. 在文件夹C:\Users\Peter\AppData\Roaming\Typora\themes中,加入下面的css文件即可,命名为my.css。my.css内容 2. 选择你的主题为my3. 效果如图 注意:如果你的字体没有完全像我一样,是因…

学习RHCSA的day.03

目录 2.6 Linux系统的目录结构 2.7 目录操作命令 2.8 文件操作命令 2.6 Linux系统的目录结构 1、Linux目录结构的特点 分区加载于目录结构: 使用树形目录结构来组织和管理文件。整个系统只有一个位于根分区的一个根目录(树根)、一棵树。…

chatgpt赋能Python-mac版python教程

了解Mac版Python教程 Python编程语言越来越受欢迎,是由其简单易学、使用广泛的特点所得。Mac用户也喜欢使用Python进行编程,因为Python在macOS中得到良好的支持。在本篇文章中,我们将介绍一些最受欢迎的Mac版Python教程,并提供一…

chatgpt赋能Python-a____python

理解Python的a[:]语法 Python是一门高级编程语言,它被广泛应用于数据分析、机器学习、人工智能等领域。在Python编程中,有一个很重要的语法就是a[:]。 在本文中,我们将介绍这个语法的含义、作用和用法,并帮助读者更好地理解这个语…

动态规划算法:解决复杂问题的利器

文章目录 摘要引言动态规划的基本原理动态规划的应用场景动态规划的实际代码示例总结与展望 动态规划算法的优缺点优点:缺点: 总结: 摘要 动态规划(Dynamic Programming)是一种高效解决复杂问题的算法方法&#xff0c…

如何学习网络安全?

近半年我一直在整理网络安全相关资料,对于网络安全该怎么入门我谈谈我的看法,网络安全一直处于法律的边缘,学的不好或者剑走偏锋一下子人就进去了,所以我建议入门前先熟读《网络安全法》,除此之外还有《互联网安全产品…

AVL树(平衡二叉搜索树)

如果BST树插入的顺序是有序的,那么BST树就会退化成一个双链表结构,查询的速率就会很慢, 所以有了AVL树的意义。 AVL树的定义: 是具有下列性质的二叉搜索树 1、它的左子树和右子树都是AVL树 2、左子树和右子树的高度之差的绝对值…

Java --- redis7之redisson的使用

目录 一、自研分布式锁核心 二、redlock红锁算法 Distributed locks with redis 2.1、设计理念 2.2、容错公式 2.3、单机案例实现 三、redisson源码分析 四、多机案例 4.1、启动三台docker的redis7 4.2、进入redis 一、自研分布式锁核心 1、按照JUC里面java.util.conc…

linux kernel pwn

基础知识 内核概述 内核架构 通常来说我们可以把内核架构分为两种:宏内核和微内核,现在还有一种内核是混合了宏内核与微内核的特性,称为混合内核。 宏内核(Monolithic kernel),也译为集成式内核、单体…

工信部认可! 开源网安“源码级软件开发安全解决方案”成功入选优秀方案

日前,开源网安“源码级软件开发安全解决方案”成功入选工信部网络安全产业发展中心“2022年信息技术应用创新解决方案”,成为经工业部认可的优秀解决方案。 据悉,由工业和信息化部网络安全产业发展中心(工业和信息化部信息中心&am…

【Leetcode刷题】算法:罗马数字转整数

文章目录 一、问题二、代码理解 一、问题 二、代码理解 class Solution:def romanToInt(self, s: str) -> int:answer0length len(s)d{I:1,V:5,X:10, L:50,C:100, D:500,M:1000}for i in range(length-1):if d[s[i1]]>d[s[i]]:answeranswer-d[s[i]]else:answeranswerd[…

2023年市场规模将超147亿美元,中国人工智能产业的“风口”来了吗?

2023年IDC中国ICT市场趋势论坛于5月10日召开,会议重点探讨了人工智能、工业互联网、网络安全、大数据、云计算等领域,并强调了智能终端、智慧城市和半导体等行业的前景。 IDC预计,中国人工智能市场规模在2023年将超过147亿美元,到…

Day2 排序子序列、倒置字符串

✨个人主页: 北 海 🎉所属专栏: C/C相关题解 🎃操作环境: Visual Studio 2019 版本 16.11.17 文章目录 选择题1.字符串/C指针2.计算机组成原理 编程题1.排序子序列2.倒置字符串 选择题 1.字符串/C指针 题目&#xff…

【网络协议详解】——数据链路层协议(学习笔记)

📖 前言:数据链路层是 OSI 模型中的第二层,位于物理层之上,是通信网络中的重要组成部分之一。数据链路层协议负责将网络层传输的数据分组封装成帧,传输到物理层,并通过物理介质进行传输。同时,数…

为什么有些同事昨天还干的好好地,今天就离职了老板都留不住?

HR时常会遭遇员工突发申请离职,对于一些核心岗位员工的离职,甚至没有时间去挽留。 但从心理学的角度来说,人的行为与意识是相互反应、互加映衬的。 也就是说,员工离职意识的产生与发展, 与他近期的行为息息相关。 与…

零基础学软件测试怎么样? 完好就业吗

在当今数字化快速发展的社会中,软件行业已经成为了一个具有巨大潜力和广阔前景的行业。而软件测试作为软件开发过程中不可或缺的一部分,也因此成为了备受瞩目的职业之一。 对于零基础的人来说,学习软件测试是一项非常实用的技能,…