Nginx专题--反向代理(未完成)

反向代理
  正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

反向代理:其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了

反向代理的几个标签

标签指令-location

loacation 匹配顺序
1)location 匹配格式规则前缀有如下几种:
= 开头:表示精确匹配
^~ 开头:注意这不是一个正则表达式,它的目的是优于正则表达式的匹配;如果该 location 是最佳匹配,则不再进行正则表达式检测。
~ 开头:表示区分大小写的正则匹配;
~* 开头:表示不区分大小写的正则匹配
!~ && !~*:表示区分大小写不匹配的正则和不区分大小写的不匹配的正则
2)location 如果不带前缀就是普通字符串匹配,比如:
/uri/ 普通字符串匹配
/ 绝对路径根目录匹配,如果没有其它匹配,任何请求都会匹配到
3)匹配的搜索顺序优先级如下(从上到下优先级依次递减):
注意:
当有匹配成功时,立刻停止匹配,按照当前匹配规则处理请求
优先搜索并不意味着优先命中!
字符串匹配优先搜索,但是只是记录下最长的匹配 ( 如果 ^~ 是最长的匹配,则会直接命中,停止搜索正则 ),然后继续搜索正则匹配,如果有正则匹配,则命中正则匹配,如果没有正则匹配,则命中最长的字符串匹配。

首先匹配 =
其次匹配 ^~
再其次按照配置文件的顺序进行正则匹配
最后是交给 / 进行通用匹配

(location =) > (location 完整路径) > (location ^~ 路径) > (location ,* 正则顺序) > (location 部分起始路径) > (/)
4)location 是否以“/”结尾
在 ngnix 中 location 进行的是模糊匹配
没有“/”结尾时,location/abc/def 可以匹配 /abc/defghi 请求,也可以匹配 /abc/def/ghi 等
而有“/”结尾时,location/abc/def/ 不能匹配 /abc/defghi 请求,只能匹配 /abc/def/anything 这样的请求

标签指令–proxy_pass

proxy_pass 代理规则(是否以“/”结尾)
(1)配置 proxy_pass 时,当在后面的 url 加上了 /,相当于是绝对路径,则 Nginx 不会把 location 中匹配的路径部分加入代理 uri。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qFeSCTj6-1690195783164)(vx_images/165721769748951.png)]
比如下面配置,我们访问 http://IP/proxy/test.html,最终代理到 URL 是 http://127.0.0.1/test.html
原文:Nginx - 反向代理location与proxy_pass配置规则总结(附样例)
(2)如果配置 proxy_pass 时,后面没有 /,Nginx 则会把匹配的路径部分加入代理 uri。
比如下面配置,我们访问 http://IP/proxy/test.html,最终代理到 URL 是 http://127.0.0.1/proxy/test.html

原文:Nginx - 反向代理location与proxy_pass配置规则总结(附样例)

标签指令–proxy_set_header

Nginx proxy_set_header:即允许重新定义或添加字段传递给代理服务器的请求头。该值可以包含文本、变量和它们的组合
在没有定义proxy_set_header时会继承之前定义的值。默认情况下,只有两个字段被重定义:

proxy_set_header Host $proxy_host;
proxy_set_header Connection close;

如果启用缓存,来自之前请求的头字段“If-Modified-Since”, “If-Unmodified-Since”, “If-None-Match”, “If-Match”, “Range”, 和 “If-Range” 将不会被代理服务器传递。
一个不会变化的“Host”头请求字段可通过如下方式被传递:

proxy_set_header Host       $http_host;

然后,当字段不在请求头中就无法传递了,在这种情况下,可通过设置Host变量,将需传递值赋给Host变量

proxy_set_header Host $host;
此外,服务器名称和端口一起通过代理服务器传递

proxy_set_header Host       $host:$proxy_port;

如果请求头的存在空的字段将不会通过代理服务器传递

proxy_set_header Accept-Encoding "";

简而言之,proxy_set_header 就是可设置请求头-并将头信息传递到服务器端,不属于请求头的参数中也需要传递时,重定义下即可!

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

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

相关文章

linux下cups 毫秒级频繁自启,导致服务瘫痪,无法使用

主要是没法停止了,,即使stop,它还是会自己重启,,, 所以直接破坏cups.service文件,然后restart,就会发现启动失败了。。 roothighguard-F300-G30:~# cat /lib/systemd/system/cups.s…

8 Linux实操篇-用户管理

8 Linux实操篇-用户管理 文章目录 8 Linux实操篇-用户管理8.1 添加用户8.2 指定/修改密码8.3 删除用户8.4 切换用户8.5 查询用户信息/查看用户8.6 用户组8.7 用户和组相关文件 学习视频来自于B站【小白入门 通俗易懂】2021韩顺平 一周学会Linux。可能会用到的资料有如下所示&am…

tauri在github上进行自动更新打包并发版过程,实战操作避坑

从网上找了很多很多的文章,结果还是入坑了,一个问题找了一天才解决: Error A public key has been found, but no private key. Make sure to set TAURI_PRIVATE_KEY environment variable. 596 ELIFECYCLE  Command failed with exit code…

k8s exam

Pause 容器是 Pod 中的第一个启动的容器,其他所有的用户容器都是其子进程当 Pod 被从节点中删除时,与之关联的 emptyDir 中的数据也将被永久删除。持久存储用PV,PVCService 资源定义了如何访问应用,但实际的网络流量管理和路由是由…

【树莓派】用于处理 I2C、SPI 和 UART 的C++库

一、说明 Raspberry Pi 是一款单板计算机,现在有 4 个修订版和一个简约的零变体。它是不同项目的热门选择,因为它体积小,功耗高,处理速度快,并且是一台完整的基于Linux的计算机。 连接多台单板计算机和/或微控制器的一…

智慧消防:如何基于视频与智能分析技术搭建可视化风险预警平台?

一、背景分析 消防安全是一个重要的话题,涉及到每个人的生活和安全。每年都会发生大量的火灾,给人们带来极大的危害,摧毁了大量的财产,甚至造成了可怕的人员伤亡。而消防安全监督管理部门人员有限,消防安全监管缺乏有…

Java读取外链图片忽略ssl验证转为base64

最近在对接外部接口时遇到返回的图片所在的服务器全都没有ssl证书,导致在前端直接用img标签展示时图片开裂。于是转为通过后端获取,绕过ssl验证之后转为base64返回。记录一下代码段。 package com.sy.ai.common.utils;import cn.hutool.core.codec.Base…

SVN - 记录一下无法提交代码 提示:被锁定(locked)

今天遇到一个问题,svn 在提交代码的时候出现了svn is already locked,导致代码无法提交(commit)和更新(update) 主要报错如下: 解决方法: 然后点击 Clean up 选中一下选项&#xff…

List、Numpy、Tensor操作基础

要想代码写的顺手, l i s t 、 n u m p y 、 t e n s o r 的操作一定要烂熟于心 要想代码写的顺手,list、numpy、tensor的操作一定要烂熟于心 要想代码写的顺手,list、numpy、tensor的操作一定要烂熟于心 一、list列表 1.1 list创建 list …

WPF实战学习笔记20-设置首页启动页

文章目录 设置首页启动页增加配置接口添加接口文件:实现接口 配置启动选项 设置首页启动页 增加配置接口 添加接口文件: Mytodo.Common/IConfigureInterface.cs using System; using System.Collections.Generic; using System.Linq; using System.T…

k8s 将pod节点上的文件拷贝到本地

要将 Kubernetes&#xff08;k8s&#xff09;中 Pod 节点上的文件拷贝到本地&#xff0c;可以通过使用 kubectl cp 命令来实现。kubectl cp 命令允许你在本地系统和 Pod 之间复制文件和目录。 下面是使用 kubectl cp 命令的语法&#xff1a; kubectl cp <namespace>/&l…

Linux centos7.x系统 下没有ens33 网卡的解决方案

一、背景 安装完windows11 Centos7.9 版本的双系统之后 , 启动Centos7.9时发现没有网卡信息 , 只有ifcfg-lo网卡的信息 , 这个时候就证明没有网卡信息&#xff0c;或者网卡驱动不匹配(我这里是没有网卡)&#xff0c;所以我们要重新安装 , 安装步骤如下 : 二、安装步骤 1.查…

Android各版本号发布日期及详细更新内容

版本号发布日期版本名称API Level更新内容Android 1.02008年9月23日初始版本初始版本&#xff0c;提供基本的手机功能和应用程序。Android 1.52009年4月30日Cupcake添加了文本输入方法&#xff08;包括虚拟键盘&#xff09;和语音搜索。 改进了网络和蓝牙功能。Android 1.62009…

PHP 药店管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 药品管理系统 是一套完善的web设计系统,系统采用smarty框架进行开发设计&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 PHP 药店管理系统mysql数据库web结构apache计 下载地址…

开发一个简单的数据库路由进行分库分表

今天我们来看看一个简单的数据库路由组件要怎么开发出来&#xff0c;这篇文章分为几个步骤进行介绍&#xff0c;分别为&#xff1a; 什么是数据库路由 路由组件的作用为什么要自研组件需要用到什么技术 整体的业务流程主要代码 介绍 数据库路由的作用 使用数据库路由是在业…

超越想象的GPT医疗 20230723

7月份读完了这本书&#xff0c;趁着周末写下读书笔记吧 这本书 作者&#xff1a;【美】彼得.李 Peter Lee 【美】凯丽.戈德伯格CareyGoldberg 著 【美】伊萨克.科恩Isaac Kohane 芦义 译 在AI风起云涌时代&#xff0c;在这刚刚过去的新冠三年&#xff0c;“超越想象的GPT医…

产品解读|有了JMeter,为什么还需要MeterSphere?

提起JMeter&#xff0c;相信大部分的测试人员应该都很熟悉。JMeter因其小巧轻量、开源&#xff0c;加上支持多种协议的接口和性能测试&#xff0c;在测试领域拥有广泛的用户群体。一方面&#xff0c;测试人员会将其安装在个人的PC上&#xff0c;用以满足日常测试工作的需要&…

【SpringCloud Alibaba】(一)微服务介绍

此专栏内容皆来自于【冰河】的《SpringCloud Alibaba 实战》文档。 1. 专栏介绍 我们先来看看《SpringCloud Alibaba实战》专栏的整体结构吧&#xff0c;先上图 从上图&#xff0c;大家可以看到&#xff0c;专栏从整体上分为十个大的篇章&#xff0c;分别为 专栏设计、微服务…

Android源码中添加自己的Product

这里假设我们的公司名叫果冻&#xff08;Jelly&#xff09;&#xff0c;我们准备开发一款对标苹果 14 的手机&#xff0c;取名叫 大米14&#xff08;Rice14&#xff09;。 接下来我们在源码中添加我们自己的产品&#xff08;Product&#xff09; 在 device 目录下添加如下的目…

Mybatis基于注解与XML开发

文章目录 1 关于SpringBoot2 关于MyBatis2.1 MyBatis概述2.2 MyBatis核心思想2.3 MyBatis使用流程3 MyBatis配置SQL方式3.1 基于注解方式3.1.1 说明3.1.2 使用流程3.1.3 常用注解 3.2 基于XML方式3.2.1 相比注解优势3.2.2 使用流程3.2.3 常用标签 1 关于SpringBoot SpringBoot…