Nginx的静态代理

2023-11-12

Nginx的静态代理

Nginx的web请求的处理机制

  • Nginx结合多进程和异步机制对外提供服务,异步机制使用的是异步非阻塞机制,即AIO,Nginx的master进程会生成多个worker进程,master进程负责管理这些worker进程的生命周期、接受外部命令、解析perl脚本等工作,而worker进程则用于接受和处理用户的客户端请求;

  • 每个worker进程都是使用异步非阻塞方式处理多个客户端请求,当某个worker接到客户端的请求之后,其会调用IO进行处理,如果不能立即得到结果,worker机会去处理其他请求,当这个IO返回结果时,会通知worker进程,worker进程接收到通知后,就会挂起当前正在执行的事务,拿IO返回结果去响应给客户端,worker进程采用的是epoll事件驱动模型与IO进行通信,epoll模型底层采用的是"回调callback"替代了轮询,使用效率要高于select模型

使用到的命令

  • ngxin -h : 查看命令选项

  • ngxin -c file : 启动命令

  • ngxin -s stop/quite : 停止命令

  • nginx -s reload : 平滑重启

  • nginx -tq : 检测配置文件是否出错,常用

请求定位(开胃小菜)

这个其实不算核心功能,但作为一个引入为后面的讲解做一个铺垫还是很有必要的,在我们安装玩Nginx后,我们对其进行访问,就会得到一个"Welcome to nginx"的页面,为什么我们访问80端口就能访问到这个页面呢?其中是不是指定了默认的显示的页面,就想index.html那样?

  

首先我们找到安装目录下的conf文件夹下的nginx.conf配置文件:cat /usr/local/nginx/conf/nginx.conf

然后我们就可以看到以下配置:

  • listen:代表监听的端口

  • location :个人理解为一个拦截规则并对拦截到的请求做中括号里面的逻辑

  • location后跟的是 "/",表示拦截所有,也对资源定位有一个约束,后面有详细介绍

  • root:指定一个资源定位目录为 :html目录,也可以指定绝对路径

  • index:指定一个资源文件为:index.tml,后面还可以跟多个,第一个访问不了就访问第二个

  • 总结:拦截80端口的所有请求,指定路径为:根目录下的html目录下的index.html资源

  • 总结:拦截80端口的所有请求,指定路径为:根目录下的html目录下的index.html资源

下面我们来看看这个index.html是个什么页面

  

可以看到这个html,就是我们刚安装完毕后,测试访问时的那个页面,为什么要说这个东西呢?因为后面的知识点都要设计到nginx.conf中的拦截规则已经相应逻辑操作,在这里先打个铺垫。

静态代理

  • 经过前面的开胃小菜,我相信大家心里都对Nginx的大概逻辑流程有一点点的B数了

  • 动态代理:将所有的静态资源,比如【html、css、js、jpg、...】等资源存放到Nginx服务器,而不存放在应用服务器Tomcat中,当客户端对这些静态资源进行访问的时候,就可以不用去麻烦Tomcat了,我们Nginx直接将其响应给客户端,这样就大大降低了应用服务器Tomcat的负载压力,

  • 同时Nginx对于静态资源的处理相较于Tomcat,所有在很多场景里面,Ningx都是作为静态代理服务器,专门处理静态资源的请求响应;

下面我们动手操刀,一起来看看着静态代理

  • 首先我们配置我们的Nginx的配置文件,增添我们自己的拦截规则:

  • 这里值得注意的是,每个配置后面都是以";"结尾,不然识别不出来

  • 我配置的这个拦截规则是什么意思呢?拦截 “ip:port/bb/cc” 的请求,

  • 对拦截到的请求响应资源 : /opt/aa/bb/cc/default.html页面

  • 级联创建自定义资源存放目录 : mkdir /opt/aa/bb/cc -p

  • 进入cc目录,创建自定义资源default.html : echo "This is default page" > /opt/aa/bb/cc/default.html

  • 然后我们平滑重动Nginx : ngxin -s reload,然后开始访问测试:

location后跟的拦截规则是支持正则表达式的,下面我们来看看:

首先修改nginx.conf配置文件如下:

  

  • 正则表达式的运用在Nginx中都是以 ~ 打头 以$收尾 : ~ ...$

  • .:表示任意字符

  • *:0个或多个

  • \:转义,后面跟"."表示真正的"."

  • (jpg|png|css|js|html) :限定请求的资源类型为其中之一;

修改完配置文件,记得检测一下配置文件是否语法通过 : nginx -tq

  

发现有误,就要及时的改正:大括号和正则表达式之间有个空格,需要打出来

我们已经把拦截规则设立好了,我们的静态资源也得到位才能看效果,上传图片到 /opt/statics/images/

  

然后我们想一下,根据前面教的经验,这些图片根据我们的拦截规则,我们该发起什么样的URL才能访问?

http://92.168.159.169:80 / ?? / ?? ,我们知道我的资源访问规则是 Root指定的目录+拦截的目录

所以路径为? http://92.168.159.169:80 / images/6.jpg ,先测试一下行的同否

  

完美! 你,想通了吗?

首先我们的拦截规则是零个或多个任意字符 " ip:port//images/6" 符合我们的拦截规则

然后".jpg"也符合我们的请求资源类型约束规则

其次就是资源定位问题:

  • root属性所指定的目录 :/opt/statics

  • 此条请求的拦截规则中路径:images/6.jsp

  • 两个相并 : /opt/statics/images/6.jgp ,完美路径!

转载于:https://www.cnblogs.com/msi-chen/p/11130852.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nginx的静态代理 的相关文章

  • SmartNews 基于 Flink 的 Iceberg 实时数据湖实践

    摘要 本文整理自 SmartNews 数据平台架构师 Apache Iceberg Contributor 戢清雨 在 Flink Forward Asia 2022 实时湖仓专场的分享 本篇内容主要分为五个部分 1 SmartNews 数
  • Edge浏览器新建标签页如何更改为指定网址?

    困扰我好久的问题 在网上找了半天 终于解决了 我就想在浏览器点加号打开新窗口时跳转到百度 便于查找 扩展 获取扩展 搜索New Tab Changer
  • 单链表的增删改查操作详解之C语言版

    单链表在应用中经常用到增加新结点 删除结点 修改结点 查找结点等操作 本文针对上述基本操作做了简单汇总 并给出了详细的算法 一 在单链表中增加结点 在链表中增加新结点是经常要用到的操作 增加新结点大致可以分为在链表末尾增加 在链表头增加 在
  • CTFHUB - SQL注入-整数型和字符型注入

    目录 一 前言 二 使用工具 三 知识点 四 整数型注入 1 sqlmap工具注入 2 手工注入 知识点 步骤 复现 五 字符型注入 复现 1 手工注入 2 sqlmap注入 一 前言 SQL注入即是指web应用程序对用户输入数据的合法性没
  • c++服务端开发心跳机制

    高并发服务器整体框架 服务器心跳机制 由于线路等原因 中间过程可能发生 断线 服务器和设备端程序都无法侦测到 为 了能够及时发现断线 而启动断线重连机制 所以 在客户端应该能定时发送测试的 心跳 包 同时 为了减轻服务器端的压力 服务器对于
  • 微信开发------微信公众号新老账户粉丝迁移问题

    一 迁移注意事项 I 账号迁移申请提交后原账号用户信息无法再通过接口获取 II 申请提交后 opneid装换接口最多保留15天 超过15天接口失效 无法继续装换openid III 装换的openid不应都能装换完成 只有关注旧公众号的用户
  • 蓝桥杯常见算法

    枚举 i 排列型枚举 next permutation ii 组合型枚举 iii 选择型枚举 搜索 i Dfs ii Bfs 判断闰年 二分 高精度运算 排序算法 i 快速排序 ii 归并排序 前缀和 差分 线段树和树状数组 字符串处理 K
  • ACTF新生赛2020 frequency

    ACTF新生赛2020 frequency 1 题目概述 2 解题过程 根据题目名称frequency与文件内容猜测应该是字频方向 如果打开文档是空白的 就搜索 显示隐藏内容 a2draGxmY290bnRpdWZwZ2hodGN3dWpr
  • IDEA gradle项目出现java.lang.OutOfMemoryError: GC overhead limit exceeded 之类的错误

    试了很多很多方法都不管用 最后在gradle目录下添加gradle properties文件得以解决内容如下 项目所在目录的磁盘空间一定要比下面的配置大才行 org gradle daemon true org gradle configu
  • 高手手把手教你组件封装步骤

    我将在这个博客中更新各种组件的封装 轮播图 骨架屏 复选框 对话框 面包屑组件 看到就是学到 偷着乐吧 轮播图封装详解 注册一个vue文件 在src的components中注册一个Carousel vue 在vue use中注册全局组件 i
  • obs上传文件到服务器,文件上传到obs

    文件上传到obs 内容精选 换一换 设备上报文件上传结果 Topic oc devices device id sys events upServiceEvent定义表paras参数列表 从OBS导入数据到集群之前 需要提前准备数据源文件
  • Vue3——Axios(网络请求库)

    文章目录 求一键三连 前言 认识axios 使用Axios 常见请求演示 配置选项 baseURL all 创建axios实例 请求拦截 掌握 对axios的类的封装 掌握 老师封装好的一个更完全的axios库 求一键三连 希望大家看完觉得
  • Web3j签名与验签

    闲时 给大家讲讲本人在做项目过程中涉及到的区块链签名相关业务 希望对做区块链行业的同行有所帮助 主要是针对Java程序员围绕web3j库进行区块链以太坊开发 本地签名与验签 代码实例 Description Web3j签名验签 public
  • 什么叫基本表?什么是视图?二者的区别和联系是什么?

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 视图 在SQL中 视图是外模式一级数据结构的基本单位 它是从一个或几个基本表中导出的 表 是从现有基本表中抽取若干子集组成用户的 专用表 基本表 基本表的定义指建立基本关系
  • minio怎么连接文件服务器,【FastAPI基础】17.2、接入docker minio文件服务器操作文件,附源码...

    引言 最近工作中有机会接触FastAPI这个框架 所以就把官方文档看了一遍 对框架的各个特性及使用方法做了总结 会逐步的发出来 希望对您有用 如果您之前接触过python的其他框架 看起来会非常简单和顺畅 其实就是很简单 废话不多说 直接上
  • [Error] invalid operands to binary ^ (have ‘double‘ and ‘float‘)

    C C 中不能直接使用 在C C 中不能使用 来表示指数 只能用 如果想使用指数 只能建立循环多次相乘或者直接用乘法写出多个 下面是我的代码 注释部分为原来使用的指数形式 会报以上错误 或者引用数学函数 在前面加上 include
  • Python3 基本数据类型(List(列表))

    Python3 基本数据类型 List 列表 List 列表 是 Python 中使用最频繁的数据类型 列表可以完成大多数集合类的数据结构实现 列表中元素的类型可以不相同 它支持数字 字符串甚至可以包含列表 所谓嵌套 列表是写在方括号 之间
  • 2023国赛数学建模思路 - 案例:最短时间生产计划安排

    文章目录 0 赛题思路 1 模型描述 2 实例 2 1 问题描述 2 2 数学模型 2 2 1 模型流程 2 2 2 符号约定 2 2 3 求解模型 2 3 相关代码 2 4 模型求解结果 建模资料 0 赛题思路 赛题出来以后第一时间在CS
  • 传奇服务端GOM引擎和GEE引擎区别在哪里?

    关于GameOfMir跟GEE引擎之间的区别简单说Gom引擎支持了BDE数据库 Access数据库 而GEE目前还没有支持BDE数据库 mysql数据库可惜mysql数据库支持还不完善 引擎没有绝对的好坏主要是在使用上操作上功能都差不多今天
  • 【安利】mac免费开源文字识别-使用脚本和快捷指令-可识别中文(利用macOCR)

    前言 在mac上 常用的截图文本识别软件有TextScanner iText等等 但是它们都是付费的 这次我无意发现了利用脚本和苹果快捷指令就可以使用的开源截图文本识别软件 推荐给大家 github地址为 schappim macOCR G

随机推荐

  • word2vec中文相似词计算和聚类的使用说明及c语言源码

    word2vec相关基础知识 下载安装参考前文 word2vec词向量中文文本相似度计算 目录 word2vec使用说明及源码介绍 1 下载地址 2 中文语料 3 参数介绍 4 计算相似词语 5 三个词预测语义语法关系 6 关键词聚类 1
  • Django 运行报错 Manager isnt accessible via Category instances

    错误 Manager isn t accessible via Category instances 原因 views handler里面写错 category s Category objects all 正确的写法是 category
  • 如何运用krpano生成第一全景项目

    使用droplet制作 生成一个全景 下载好krpano包后 解压文件夹 可以看到文件夹下有诸多文件 这时打开全景图片 拖入 droplet bat 文件 马上立刻就生成一个全景项目文件了 打开新生成的文件夹 打开tour html文件 用
  • Linux磁盘分区UUID查看和修改

    查看磁盘的UUID 方法1 root ac810 blkid dev sda2 UUID 4e87d18b 3223 4f9d aa48 2bd450ad33d0 TYPE ext4 PARTUUID 337a99de 78d8 4d7d
  • R语言-画散点图

    plot 函数 plot cars dist cars speed y x main XXX 画标题 xlab XXX X坐标轴标题 ylab XXX Y坐标轴标题 xlim c 0 30 设置X轴范围为从0到30 ylim c 0 140
  • sklearn中的fit_transform、获取特征、标签转换

    skearn中有数据预处理的功能 如fit transform 和fit transform fit 求得训练集X的均值 方差 最大值 最小值 这些训练集X固有的属性 transform 在fit的基础上 进行标准化 降维 归一化等操作 f
  • Linux如何检查目录大小

    1 查看当前文件目录各个文件夹大小 du h max depth 1 查看指定目录 du h max depth 1 path 2 查看当前目录下所有目录及子目录大小 du h 代表当前目录下 也可以换成一个明确的路径 h表示用K M G的
  • 基于opencv-python的人脸识别和鸟图识别

    目录 图像识别 人脸识别 鸟图识别 一 人脸识别 即使是地铁挤压的人脸 也是有尊严的 值得被检测 经过 OpenCV 的努力 成功检测 左图是正常被识别的人脸 中图由于挤地铁人脸已不可识别 右图OpenCV单应性变换后 拯救了被miss的人
  • Docker部署Jupyter

    Docker部署Jupyter Docker安装 拉取镜像 docker pull jupyter base notebook 创建挂载目录 mkdir p opt jupyter jovyan chmod 777 opt jupyter
  • 利用 Python PyPDF2库轻松提取PDF文本(及其他高级操作)

    当需要从PDF文件中提取文本时 Python中的PyPDF2库是一个非常有用的工具 无论您是需要分析PDF文档中的内容还是需要在文档中搜索特定的信息 PyPDF2都可以帮助您轻松实现这些任务 在本文中 我们将探讨如何使用PyPDF2库提取P
  • Python编写时钟程序(运行结果在“视频“选项里)(适合学过编程2年00个月~2年11个月的人(中级篇))

    1 初始设置 from datetime import 导入相关库 from turtle import from time import sleep setup 675 675 设置窗口大小 hideturtle 隐藏海龟 mode lo
  • ElasticSearch 7.7.0 高级篇-搜索技术

    前言 有了前面的理论知识和上机实操的经验 那么下面我们将使用程序开发es 当然本篇说白了就是前面知识的总结和回顾 一 ES不分词 exact value 搜索 1 1 实战体验term filter各种不分词搜索 term filter q
  • LdapTemplate对AD域进行查询1000条记录限制,实测有效!

    公司的一个项目要从AD上取数据 但是用SpringLdap获取所有用户的时候会默认显示1000条数据 ldapTemplate search query base OU xxxx DC xxxx where objectclass is p
  • 数据压缩实验之 JPEG原理分析及JPEG解码器的调试

    文章目录 1 实验名称 2 实验目的 3 主要设备 4 实验内容 4 1 JPEG文件格式 4 2 JPEG编解码原理 4 2 1 编码流程 4 2 2 解码流程 5 实验步骤 5 1 逐步调试JPEG解码器程序 5 1 1 理解程序设计的
  • 传统机器学习和深度学习

    传统机器学习 传统机器学习从一些观测 训练 样本出发 试图发现不能通过原理分析获得的规律 实现对未来数据行为或趋势的准确预测 相关算法包括 逻辑回归 隐马尔科夫方法 支持向量机方法 K 近邻方法 三层人工神经网络方法 Adaboost算法
  • 计算机网络 二、网络协议

    一 定义 网络协议是计算机网络中互相通信的对等实体间交换信息时必须要遵守的规则的集合 二 划分层次 三 计算机的体系结构 3 1 具有五层协议的体系结构 具有五层协议的体系结构具 有五层协议的体系结构 1 应用层 application l
  • JNDI和数据库连接池

    1 JNDI 含义 JNDI Java Naming and Directory Interface java命名与目录的接口 是一个有关应用程序设计API 为开发人员提供了查找和访问各种命名和目录服务的通用 统一的接口 使用JNDI的步骤
  • React hooks认知及使用

    Hook介绍 Hook 是 React 16 8 的新增特性 它是完全可选的 并且100 向后兼容 它可以让你使用函数组件的方式 运用类组件以及 react 其他的一些特性 比如管理状态 生命周期钩子等 从概念上讲 React 组件一直更像
  • Jenkins插件开发之突破防火墙

    背景 因为防火墙限制 Jenkins服务端配置完成后 从远程url访问往往受阻 然鹅 并不是任何环境都允许你直接粗暴的将防火墙关闭 解决思路之一 可以单独设置一条规则 开放端口 步骤演示 环境 windows server 2022 1 打
  • Nginx的静态代理

    Nginx的静态代理 Nginx的web请求的处理机制 Nginx结合多进程和异步机制对外提供服务 异步机制使用的是异步非阻塞机制 即AIO Nginx的master进程会生成多个worker进程 master进程负责管理这些worker进