【Nginx30】Nginx学习:代理模块(四)响应头与SSL

Nginx学习:代理模块(四)响应头与SSL

响应头相关的配置也和我们之前在 FastCGI 系列学过的响应头配置是类似的,这一块也比较简单。而另一部分则是 Proxy 模块另一个特有的功能,SSL 相关的配置。不过这一块吧,一是配置比较麻烦,二是平常使用到的也比较少,所以我也是以学习了解的状态来进行的,偷个懒,不会进行相应的配置测试。有兴趣的小伙伴可以自己配一配哦。

今天所有的配置都可以在 http、server、location 下进行配置,有特殊情况的我会单独说。

Proxy响应头操作

响应头主要针对的是响应的操作,其实也就是对于后端服务返回的响应头,我们可以进行一些显示、隐藏、忽略之类的操作。这个之前在 FastCGI 学习时也都接触过了,所以咱们还是先了解一下这几个配置指令,然后再简单测试一下就好了。

proxy_headers_hash_bucket_size

设置 proxy_hide_header 和 proxy_set_header 指令使用的哈希表的桶大小。

proxy_headers_hash_bucket_size size;

默认值 64 。

proxy_headers_hash_max_size

设置 proxy_hide_header 和 proxy_set_header 指令使用的哈希表的最大大小。

proxy_headers_hash_max_size size;

默认值 512 ,关于这个和上面那个配置指令,都是和 设置哈希表 有关的,这个之前在 Nginx学习:响应头与Map变量操作 https://mp.weixin.qq.com/s/2pXjPD9_c-mYUMQNcwjDCA 中已经学习过了,不记得的小伙伴可以回去看下哦。

proxy_hide_header

默认情况下,Nginx 不会将代理服务器的响应中的标头字段“Date”、“Server”、“X-Pad”和“X-Accel-...”传递给客户端。

proxy_hide_header field;

没有默认值,proxy_hide_header 指令设置不会传递的附加字段。相反,如果需要允许传递字段,则可以使用 proxy_pass_header 指令。

proxy_pass_header

允许将禁用的标头字段从代理服务器传递到客户端。

proxy_pass_header field;

禁用标头就是 proxy_hide_header 中说的那些默认头字段,主要是 “Date”, “Server”, “X-Pad”, 和 “X-Accel-...” 这些。和 proxy_hide_header 是反过来的,同时出现的话也和 FastCGI 中是一样的,就看谁后设置。

proxy_ignore_headers

禁用对来自代理服务器的某些响应头字段的处理。

proxy_ignore_headers field ...;

以下字段可以忽略:“X-Accel-Redirect”、“X-Accel-Expires”、“X-Accel-Limit-Rate”(1.1.6)、“X-Accel-Buffering”(1.1.6) 、“X-Accel-Charset”(1.1.6)、“Expires”、“Cache-Control”、“Set-Cookie”(0.8.44)和“Vary”(1.7.7)。

如果未禁用,则处理这些标头字段具有以下效果:

  • “X-Accel-Expires”、“Expires”、“Cache-Control”、“Set-Cookie”、“Vary”设置响应缓存的参数

  • “X-Accel-Redirect”执行到指定 URI 的内部重定向

  • “X-Accel-Limit-Rate”设置向客户端传输响应的速率限制

  • “X-Accel-Buffering”启用或禁用响应缓冲

  • “X-Accel-Charset”设置响应的所需字符集

主要就是针对这些字段的特殊效果,如果不设置忽略,就会产生相应的效果,如果设置忽略了,就不会出现这些能力。

响应头测试

简单测试两个吧。

proxy_hide_header oopp;
#proxy_pass_header oopp;

后端 PHP 代码我们还是之前我们测试用过的那个,直接指定 oopp 这样一个自定义的响应头。

// fastcgi1/5.php
<?php
header('oopp: 123');

然后进行测试就好了。

SSL

这里的 SSL 配置主要是代理服务器与后端服务器的安全传输,不过说实话,大部分情况下我们会在内网使用反向代理进行负载均衡或部分应用的代理配置,很少会进行外网反向代理。即使有的话,不使用任何配置,直接去代理 HTTPS 也是可以的,代理请求的内容通过 WireShark 抓取的也是加密的内容。只不过使用 Proxy 本身的 SSL 配置指令,会验证证书情况,保证完整的 SSL 验证握手过程,安全性没得说。当然,这也不是没有代价的,加解密肯定是要耗费系统资源的。

因此,这一块的内容我们了解一下就好了,我也不做演示了,确实没用过,概念也略有模糊的地方。如果确实有特殊的需要,比如说我们的后端服务器必须保障数据安全的话,并且是远程的传输,不在内网范围内,就可以通过下面的设置来进行安全传输配置。

如果对这一块有了解或者在实战中使用过有心得的大佬们看到了,可以评论留言带咱们一起学习一下哦。

proxy_ssl_verify

启用或禁用代理 HTTPS 服务器证书的验证。

proxy_ssl_verify on | off;

默认值是 off 。

proxy_ssl_certificate

指定带有 PEM 格式证书的文件,用于向代理 HTTPS 服务器进行身份验证。

proxy_ssl_certificate file;

没有默认值,从 1.21.0 版本开始,文件名中可以使用变量。

proxy_ssl_certificate_key

使用 PEM 格式的密钥指定一个文件,用于向代理 HTTPS 服务器进行身份验证。

proxy_ssl_certificate_key file;

可以指定值 engine:name:id 代替文件 (1.7.9),该文件从 OpenSSL 引擎名称加载具有指定 id 的密钥。从 1.21.0 版本开始,文件名中可以使用变量。

proxy_ssl_ciphers

指定对代理 HTTPS 服务器的请求启用的密码。

proxy_ssl_ciphers ciphers;

默认值是 DEFAULT,密码以 OpenSSL 库可以理解的格式指定。可以使用“openssl ciphers”命令查看完整列表。

proxy_ssl_conf_command

在与代理 HTTPS 服务器建立连接时设置任意 OpenSSL 配置命令。

proxy_ssl_conf_command name value;

没有默认值,使用 OpenSSL 1.0.2 或更高版本时支持该指令。可以在同一级别上指定多个 proxy_ssl_conf_command 指令。当且仅当当前级别上没有定义 proxy_ssl_conf_command 指令时,这些指令才从先前的配置级别继承。请注意,直接配置 OpenSSL 可能会导致意外行为。

proxy_ssl_crl

指定一个 PEM 格式的带有撤销证书 (CRL) 的文件,用于验证代理 HTTPS 服务器的证书。

proxy_ssl_crl file;

没有默认值。

proxy_ssl_name

允许覆盖用于验证代理 HTTPS 服务器证书并在与代理 HTTPS 服务器建立连接时通过 SNI 传递的服务器名称。

proxy_ssl_name name;

默认情况下,使用 proxy_pass URL 的主机部分,也就是默认值是 $proxy_host 。

proxy_ssl_password_file

指定一个包含密钥密码短语的文件,其中每个密码短语在单独的行中指定。

proxy_ssl_password_file file;

没有默认值,加载密钥时会依次尝试密码短语。

proxy_ssl_protocols

启用对代理 HTTPS 服务器的请求的指定协议。

proxy_ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];

默认值是 TLSv1 TLSv1.1 TLSv1.2 。

proxy_ssl_server_name

在与代理 HTTPS 服务器建立连接时,启用或禁用通过 TLS 服务器名称指示扩展(SNI、RFC 6066)传递服务器名称。

proxy_ssl_server_name on | off;

默认是 off 。

proxy_ssl_session_reuse

确定在使用代理服务器时是否可以重用 SSL 会话。

proxy_ssl_session_reuse on | off;

默认值是 on ,如果日志中出现“SSL3_GET_FINISHED:digest check failed”错误,请尝试禁用会话重用。

proxy_ssl_trusted_certificate

指定具有 PEM 格式的受信任 CA 证书的文件,用于验证代理 HTTPS 服务器的证书。

proxy_ssl_trusted_certificate file;

没有默认值。

proxy_ssl_verify_depth

在代理的 HTTPS 服务器证书链中设置验证深度。

proxy_ssl_verify_depth number;

默认值是 1 。

总结

今天的内容超级简单吧,就跟看文档一样的,就一个简单的响应头相关的两个配置指令的测试。虽说这样的学习效率很差,但是,如果确实是不经常使用的内容,混个眼熟也没什么不好。知识浩瀚,我们程序员似乎总也学不完一样,编程语言就不说了,前两天还是大数据,过两天就是人工智能,门都没入呢别的又来了。先不说各种概念框架的底层原理,光是文档估计看全都没几个人吧。所以,咱也不能太浪费自己的精力,有的时候,总是要有一些取舍的。到这里,将来如果真的需要的时候,起码第一时间能马上想起来,完了再针对具体的业务场景进行深入的研究和学习,也是不错的选择哦。

参考文档:

http://nginx.org/en/docs/http/ngx_http_proxy_module.html

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

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

相关文章

web:[极客大挑战 2019]LoveSQL

题目 打开页面显示如下 查看源代码&#xff0c;查到一个check.php&#xff0c;还是get传参 尝试账号密码输入 题目名为sql&#xff0c;用万能密码 1or 11# 或 admin or 11 给了一段乱码&#xff0c;也不是flag 查看字段数 /check.php?usernameadmin order by 3%23&pass…

Codeforces Round 870 (Div. 2)C. Dreaming of Freedom(数论、约数)

C. Dreaming of Freedom 题意&#xff1a;给定n个程序员&#xff0c;m个算法&#xff0c;每个人只能为一个算法投票&#xff0c;经过每轮投票后都只留下得票最高的程序&#xff0c;问最后会不会陷入循环&#xff0c;即出现几个程序平票的情况。 思路&#xff1a;我们考虑题目中…

Word | 简单可操作的快捷公式编号、右对齐和引用方法

1. 问题描述 在理工科论文的写作中&#xff0c;涉及到大量的公式输入&#xff0c;我们希望能够按照章节为公式进行编号&#xff0c;并且实现公式居中&#xff0c;编号右对齐的效果。网上有各种各样的方法来实现&#xff0c;操作繁琐和简单的混在一起&#xff0c;让没有接触过公…

Redis学习笔记(常用数据类型,发布订阅,事务和锁机制,持久化,集群,雪崩,缓存击穿,分布式锁)

一、NoSQL数据库简介 解决扩展性问题&#xff0c;如果需要对功能进行改变&#xff08;比如增删功能&#xff09;&#xff0c;用框架有一定的规范要求&#xff0c;无形中解决了扩展性问题。 Redis是一种典型的NoSQL数据库。 NoSQL的基础作用&#xff1a; 1. nginx负载均衡反向…

深度学习概念——端对端

目录 1、端对端是什么2、端对端有什么用3、例子4、引用 在读论文的过程中反复遇到端对端的概念&#xff0c;就需要理解深刻一些。在此将收集到的一些资料拿出来辅以自己的拙见&#xff0c;请大家多多批评指正&#xff01; 1、端对端是什么 在计算机学科中有一种算法叫分治法&a…

Armv9读取cache内容:Direct access to internal memory

10 访问cache Cortex-A720核心提供一种机制,通过IMPLEMENTATION DEFINED系统寄存器可以读取L1缓存、L2缓存和Translation Lookaside Buffer(TLB)。当缓存数据与系统内存数据之间的一致性异常时,您可以使用此机制来调查任何问题。 只有在EL3中才可以访问内部内存(cache)。…

排序:最佳归并树(优化外部排序中对磁盘的读写次数)

1.归并树的性质 每个初始归并段对应一个叶子结点&#xff0c;把归并段的块数作为叶子的权值归并树的WPL树中所有叶结点的带权路径长度之和归并过程中的磁盘I/O次数归并树的WPL*2 如下图&#xff1a; 每个初始归并段看作一个叶子结点&#xff0c;归并段的长度作为结点权值&a…

【深度学习】分类问题探究(多标签分类转为多个二分类,等)

【深度学习】分类问题探究&#xff08;多标签分类转为多个二分类&#xff0c;等&#xff09; 文章目录 【深度学习】分类问题探究&#xff08;多标签分类转为多个二分类&#xff0c;等&#xff09;1. 介绍2. 一些解析2.1 关于多标签分类 to 多个二分类 2.2 continue 1. 介绍 在…

有车型(CarModel),车厂(CarFactory),经销商(Distributor)三个表

用drf编写 1 有车型(CarModel)&#xff0c;车厂&#xff08;CarFactory&#xff09;&#xff0c;经销商(Distributor)三个表, 一个车厂可以生产多种车型&#xff0c;一个经销商可以出售多种车型&#xff0c;一个车型可以有多个经销商出售车型&#xff1a;车型名&#xff0c;车型…

FFmpeg视音频分离器----向雷神学习

雷神博客地址&#xff1a;https://blog.csdn.net/leixiaohua1020/article/details/39767055 本程序可以将封装格式中的视频码流数据和音频码流数据分离出来。 在该例子中&#xff0c; 将FLV的文件分离得到H.264视频码流文件和MP3 音频码流文件。 注意&#xff1a; 这个是简化版…

C/C++进程线程超详细详解

目录 前言 一、进程基础 1.进程概念 2.进程特征 3.进程状态&#xff08;如图清晰可见&#xff09; 4&#xff0c;进程的标识 实例代码如下&#xff1a; 5.进程的种类 实例shell脚本程序如下: 二、进程API 1.创建子进程 实例代码如下&#xff1a; 2.exec函数族 函数…

搭建自己的pypi服务器

要搭建自己的 PyPI 服务器&#xff0c;您可以使用 warehouse 项目&#xff0c;它是 PyPI 的开源实现。下面是一些基本步骤&#xff1a; 准备环境&#xff1a; 安装 Python安装 PostgreSQL 数据库 克隆 warehouse 项目&#xff1a; git clone https://github.com/pypa/wareh…

Socket网络编程练习题四:客户端上传文件(多线程版)

题目 想要服务器不停止&#xff0c;能接收很多客户上传的图片&#xff1f; 解决方案 可以使用循环或者多线程 但是循环不合理&#xff0c;最优解法是&#xff08;循环多线程&#xff09;改写 代码实战 客户端代码 package com.heima;import java.io.*; import java.net.S…

在Windows11上安装ubuntu虚拟机

一开始是参考了 VMware17虚拟机安装Ubuntu最新版本(Ubuntu22.04LTS)详细步骤 专栏的1和2来的。但是后面总是提示operating system not found&#xff0c;就参考vmware安装ubuntu时总是提示operating system not found&#xff0c;选择典型安装而不是专栏选择的自定义安装&#…

深度学习算法在工业视觉落地的思考

0.废话 距离上次的栈板识别的思考已经过去3个月&#xff0c;中间根据客户的需求和自己的思考&#xff0c;对软件又重新做了调整。但是整体上还是不满意。 0.1 老生常谈的工业视觉落地架构 对于软件架构&#xff0c;我实在没有太多的参考。没办法&#xff0c;公司根本不关心软…

Redis与Mybatis

作者在学习Redis整合时使用JDBC与Jedis&#xff0c;但是呢&#xff0c;现如今的环境下&#xff0c;Mybatis系列ORM框架是更受关注的方法&#xff0c;作者有一点点Mybatis基础&#xff0c;Mybatisplus几乎忘的差不多了&#xff0c;现对Redis整合Mybatis相关知识进行梳理&#xf…

使用华为eNSP组网试验⑵-通过端口地址进行静态路由

有了网络模拟器可以对很多网络应用场景进行模拟&#xff0c;既方便学习又有利于实际的网络实施。 之前因为没有用过&#xff0c;用过了才知道eNSP的好处。但是与思科模拟器不同&#xff0c;连接是自动连接&#xff0c;不能确定端口&#xff0c;比如使用指定的光纤端口或者RJ45的…

CSS详细基础(六)边框样式

本期是CSS基础的最后一篇~ 目录 一.border属性 二.边框属性复合写法 三.CSS修改表格标签 四.内边距属性 五.外边距属性 六.其他杂例 1.盒子元素水平居中 2.清除网页内外元素边距 3.外边距的合并与塌陷 4.padding不会撑大盒子的情况 七.综合案例——新浪导航栏仿真 …

在 msys2/mingw 下安装及编译 opencv

最简单就是直接安装 pacman -S mingw-w64-x86_64-opencv 以下记录一下编译的过程 1. 安装编译工具及第三方库 pacman -S --needed base-devel mingw-w64-x86_64-toolchain unzip gccpacman -S python mingw-w64-x86_64-python2 mingw-w64-x86_64-gtk3 mingw-w64-x86_64-…

QT按钮介绍

目录 按钮基类 QAbstractButton QPushButton QToolButton QRadioButton QCheckBox 按钮基类 QAbstractButton 这是按钮的基类&#xff0c;它是继承QWidget类 它可对当前的图标&#xff0c;标题等进行设置。 它有自己的一些信号与槽函数&#xff1a; /* 当按钮被激活时(即…