介绍下Nginx的作用与请求转发机制

nginx如何将请求转发到后端服务器,后端服务器又是如何识别请求到其子服务 nginx中有以下配置: 在网关的yml文件中配置了routes: 前端传入的路径为http://10.104.0.164:18080/dataplatform/authzth/user/enquiry 此时网关是如何识别转发,请求到对应的子服务中?前端请求:Nginx 处理:Spring Cloud Gateway 处理:子服务处理:Nginx 配置:nginx location /dataplatform/ { proxy_pass http://10.104.0.165:8601/; 阅读详情

引言

最近笔者在业务中遇到了Nginx轮训策略使用不当导致后端服务的压力增加,从而导致容器CPU资源不足,响应超时的问题;

但由于对Nginx的了解仅限与作为反向代理使用,所以借用GPT工具整理了Nginx的作用以及请求转发机制,有些囫囵吞枣,因此本篇文章的很多内容都是GPT生成,如有错误,欢迎指正。

Nginx的核心作用

Nginx作为高性能Web服务器和反向代理工具,在负载均衡、静态资源处理、API网关等场景中有着重要作用。

反向代理与负载均衡

  • 功能:隐藏后端服务器真实IP,通过多台服务器分担流量,提升系统可用性。

  • 典型场景:

  • 电商大促时,将请求分发至多台应用服务器,避免单点过载。

  • 结合upstream模块实现加权轮询、最小连接数等调度策略。

静态资源服务

  • 优势:直接处理图片、JS/CSS等静态文件,避免占用应用服务器资源。
  • 数据:Nginx处理静态资源效率比Apache高3倍以上(Nginx官方测试)。

缓存与加速

  • 机制:通过proxy_cache模块缓存动态内容,减少后端计算开销。
  • 案例:新闻网站将热门文章缓存10分钟,后端压力降低80%。

安全防护

  • DDoS防御:通过limit_req限制单位时间请求数。
  • WAF集成:结合ModSecurity规则过滤SQL注入等攻击。

请求转发机制

链路阶段分解

阶段Nginx核心操作技术要点
1. 连接建立- 监听80/443端口,通过worker_processes分配工作进程 - 接受TCP连接,建立socket套接字- 默认单进程可处理10万+连接(依赖epoll模型) - 支持HTTP Keepalive复用连接
2. 请求解析- 解析HTTP头、URI路径、Query参数、Host字段 - 验证请求合法性(如URI长度限制)- 支持HTTP/1.1和HTTP/2协议 - 最大请求头大小由large_client_header_buffers控制
3. 路由匹配- 通过location指令匹配URI规则(如/eshop/) - 执行重写规则(rewrite指令)- 支持前缀匹配、正则匹配、精确匹配 - 匹配优先级:精确 > 前缀 > 正则
4. 负载均衡- 根据upstream配置选择后端节点(如轮询、最少连接) - 执行健康检查(max_fails)- 支持DNS轮询、IP哈希、一致性哈希等算法 - 健康检查间隔默认为10秒
5. 请求转发- 修改请求头(proxy_set_header) - 建立到后端服务的TCP连接并转发请求- 支持HTTP/1.1长连接复用 - 可配置超时时间(proxy_connect_timeout)
6. 响应处理- 接收后端响应,处理状态码、Header、Body - 可执行缓存、压缩、重写等操作- 支持gzip压缩(节省带宽) - 可缓存动态内容(proxy_cache)
7. 返回客户端- 修改响应头(如添加X-Cache-Status) - 通过已建立的连接返回数据- 支持分块传输(chunked transfer) - 可配置TCP_NODELAY优化小文件传输

关键配置示例

nginx

http {
    upstream eshop_backend {
        server 10.0.0.1:8080 weight=3;
        server 10.0.0.2:8080 weight=2;
    }
 
    server {
        listen 80;
        server_name eshop.example.com;
 
        location /eshop/ {
            proxy_pass http://eshop_backend/;  # 转发到upstream
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_http_version 1.1;
            proxy_set_header Connection "";  # 关闭后端长连接(若后端不支持)
        }
    }
}

一些常见问题

异常的状态码分析

499

499作为Nginx自定义的状态码,Nginx 对499的定义是client has closed connection。这个定义比较模糊,简单来说就是Nginx在完成响应之前客户端断开了连接。

常见原因与排查方向

原因分类具体表现排查方法
客户端行为异常- 浏览器标签页关闭时,未完成的请求被终止 - 移动端 SDK 提前取消请求- 通过 access_log 过滤 499 请求,分析 user_agent 和 request_time
超时配置冲突- 客户端超时时间(如浏览器) < Nginx 超时时间 < 后端处理时间- 使用 Wireshark 抓包,对比客户端 Connection: close 发送时间与 Nginx 日志时间
恶意请求干扰- 爬虫高频请求后立即中断连接 - 自动化测试脚本未正确处理异步响应- 通过 limit_req 限制单 IP 请求频率,结合 fail2ban 封禁异常 IP

504

504指网关超时,在Nginx与后端服务交互流程中,表示在配置的超时时间内未收到后端服务的响应;一般来说,出现504异常码,都是服务处理请求的时间变长,可能的原因有

  • 流量激增导致CPU资源消耗,请求抢占CPU导致耗时增加;
  • 内存不足,触发垃圾回收;
  • 磁盘读写性能瓶颈,请求在等待IO完成;
  • 外部依赖异常,如数据库连接重试超时、三方服务无法处理新请求。
Nginx基础教程(48)Nginx HTTP请求转发之请求转发机制:Nginx请求转发:老板让我同时对接仨部门,我反手一个代理... 本文深入剖析Nginx HTTP请求转发机制,揭秘其高并发秘密在于多进程+异步非阻塞模型。通过三大实战场景——显性转发(301/302重定向)、隐性转发(反向代理)和端口转发,详解location与proxy_pass配置诀窍。还涵盖负载均衡四种算法、性能优化参数及完整电商网站配置示例,助你轻松应对复杂业务路由,提升系统扩展性与稳定性。 阅读详情

相关推荐

Nginx 如何处理请求的跨协议转发?

想象一下,您有一个网站,一部分用户通过 HTTP 协议访问,而另一部分用户则通过 HTTPS 协议访问。又或者,您的应用需要将来自 WebSocket 协议的请求转发到其他后端服务。这时候,就需要 Nginx 来施展魔法,将这些不同协议的请求准确无误地转发到合适的目的地,这就是请求的跨协议转发。用一个生活中的例子来类比,这就像是一个快递中转站,无论包裹是从陆运、海运还是空运过来的,都要被准确地分拣并发送到正确的配送路线上。

2401_86074221的博客 1415

Nginx 配置实现请求转发功能

1、找到配置文件 2、文件说明 #开启进程数 <=CPU数 worker_processes 1; #错误日志保存位置 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #进程号保存文件 #pid logs/nginx.pid; #每个进程最大连接数(最大连接=连接数x进程数)每个worker允许同时产生多少个链接,默认1024 e

优快云_Admin0的博客 5万+

Nginx基础教程(50)Nginx HTTP请求转发之源码分析:Nginx请求转发深度解剖:源码里的江湖暗语

本篇带你深入Nginx HTTP请求转发的源码世界,用幽默生动的解读揭开代理背后的秘密。从请求流转的核心机制到关键数据结构分析,再到一套可直接上手的完整配置示例,让你不仅知其然更知其所以然,彻底掌握Nginx的转发魔法。掌握这套“源码暗语”,让你的Nginx配置从能用到精通。

jxf_jxfcsdn的博客 645

Nginx请求转发

1.简介​​​​​​ Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度,京东新浪、网易、腾讯、淘宝等 2.安装nginx 下载后解压到相应的路径中即可,不建议有路径中有中文。 然后再根据具体要求更改配置文件, 启动nginx 进入nginx-1.12.2目录中,cmd打开,命令nginx

qq_41950447的博客 1万+

nginx的转发机制

正向代理:正向代理是指代理服务器接收客户端的请求,然后将请求转发给目标服务器,并将目标服务器的响应返回给客户端。反向代理:反向代理是指代理服务器接收客户端的请求,然后将请求转发给后端的多个服务器,并将其中一个服务器的响应返回给客户端。动静分离:Nginx可以根据请求的URL来判断请求是动态请求还是静态请求,然后将静态请求直接由Nginx处理,动态请求转发给后端的应用服务器处理,以此来提高服务器的处理能力。负载均衡:Nginx可以将接收到的请求分发到后端的多个服务器,以此来分摊服务器的负载。

weixin_39291964的博客 973

【Nginx学习】5大步骤揭秘Nginx Upstream机制:以上游网速优先转发响应包头

首先,我们来回顾一下Upstream机制的基本概念。Upstream机制允许Nginx将请求转发到多个后端服务器,从而实现负载均衡和高可用性。这就像是一支乐队,Nginx作为指挥,根据不同的需求将任务分配给不同的乐手(后端服务器),确保演奏的和谐与高效。通过上述的解析,我们可以看到Nginx在以上游网速优先转发响应包头时的设计和实现。从初始化接收缓冲区、注册接收事件,到读取响应数据、处理响应数据,每一步都至关重要。Nginx通过动态调整发送速率,确保了响应数据的高效传输和系统的稳定运行。

java专栏 1747

Nginx与PHP的交互

转载自:https://www.imooc.com/article/19278 Nginx是俄国人最早开发的Webserver,现在已经风靡全球,相信大家并不陌生。PHP也通过二十多年的发展来到了7系列版本,更加关注性能。这对搭档在最近这些年,叱咤风云,基本上LNMP成了当下的标配。可是,你用了这么多年的Nginx+PHP的搭配,你真正知道他们之间是怎么交互怎么通信的么?作为一道常常用来面试的考...

zxycele的专栏 1240

nginx使用详解:转发规则、负载均衡、server_name

nginx使用详解:转发规则、负载均衡、server_name

质量不太好的博客 1万+

Nginx反向代理与系统参数

功能:作为一个webserver,对外部监听的端口,由外界来一个请求(对应一个http的请求),接收完数据后,对于nginx部分每一个进程都一样的,划分到哪一个进程处理,内部就是把http协议解析出来,从而转发到后端的server上面。由于fork()函数创建一个子进程,当链接的时候子进程的fd进行epoll操作,而父进程的fd不会触发。nginx基础组件,线程池,内存池,原子,共享内存,string, list, hash, array。nginx源码 多进程网络,http状态机,多进程网络加锁。

gyzhu20的博客 649

3个PLC进阶教程实战项目,学完立即接私单!

此处应插入清晰的硬件电路图,包含土壤湿度传感器、水泵、PLC的输入输出端子,并标注清晰的接线方式。同样的,也需要插入清晰的梯形图,用简单的逻辑表达控制过程,比如:土壤湿度传感器信号低于设定值 -> PLC输出信号 -> 水泵启动。我是老王,一个在自动化行业摸爬滚打多年的老工程师,今天咱们不聊那些枯燥的理论,直接上手三个PLC进阶实战项目,学完保证你信心满满,立马就能接私单!想想你家里的空调,它也是通过检测室温,并根据设定的温度进行制冷或制热,这个项目就是类似的原理。

qq_38220914的博客 1475

基于 YOLO + SAM 的自动图像标注实战

摘要: 本文提出一种基于YOLO检测和SAM分割的自动化数据标注流水线方案,通过YOLO定位目标并生成检测框,再以检测框为提示驱动SAM完成精细分割,最终输出YOLO格式的标注文件。该方案将人工标注升级为半自动流程,显著提升标注效率,尤其适用于多类别、大规模图像的实例级标注需求。代码模块化设计支持模型灵活替换,并集成异常处理与进度可视化功能。虽依赖YOLO检测质量且对小目标存在局限,但作为工程落地方案,可有效降低私有数据集构建成本,适用于工业检测、遥感等场景的冷启动标注。

qq_64366203的博客 1148

nginx 初探

正向代理与反向代理 正向代理 proxy 代理客户端向原始服务器转发请求,并将响应返回客户端。服务端不知道实际发出请求的客户端 例如:翻墙时常用的proxy代理 反向代理 proxy 代理服务器接收请求,并转发给内部网络服务器。客户端不知道实际提供服务的服务端 例如:用作负载均衡的proxy代理 负载均衡 负载均衡是对大量访问请求和流量进行分流,降低单台服务器的处理压力,减少前端用户等待响应的时延...

若明 137

从查表法到实时计算:SimpleFOC库中正弦函数优化的技术演进

本文深入探讨了SimpleFOC库v2.0.1版本中正弦函数优化技术的演进,从传统查表法到实时计算的创新实践。通过定点数优化、对称性利用和分段线性插值等关键技术,实现了在嵌入式电机控制中的高效三角函数计算,显著提升性能和资源利用率。

weixin_28273593的博客 452

Nginx之11吸星大法 - (页面缓存)

什么是网页缓存? 网页缓存是存在于网页应用服务器及客户端之间的数据副本,当用户对第一次对网页资源进行访问时,经过网页服务器处理后返回客户端同事将会缓存一份数据在缓存服务器上,当下一个用户对同样的网页资源进行访问时则直接从缓存服务器总进进行相应,而不用再次对源网页服务器进行请求。有效的降低对源网页服务器的性能消耗,以及减少了网络延迟,提供了用户访问的相应速度。 缓存工作流程 浏览器发起请求到N...

weixin_40581617的博客 186

NVIDIA NCCL 安装和测试实战教程

ibrary)是用于深度学习应用的高性能通信库,可加速多GPU通信和同步。它能够在多个GPU之间进行高效的数据传输和集体操作,显著提高了分布式GPU系统上深度学习训练和推理的性能。NVIDIA NCCL是加速多GPU系统上深度学习应用的必不可少的工具。其高效的通信原语和集体操作显著提高了分布式训练和推理的性能,使其成为现代深度学习基础架构的关键组成部分。

weixin_39818775的博客 4430

【2026年阿里巴巴集团暑期实习- 4月25日-算法岗-第二题- 矩阵计数】(题目+思路+Java&C++&Python解析+在线测试)

摘要: 给定两个非负整数序列a和b,构造n×m矩阵C,其中C[i][j]=a[i]×b[j]。统计矩阵中元素≥k的数量。解法是先对数组b排序,然后对于每个a[i],若k=0则直接累加m;若a[i]=0且k>0则跳过;否则计算需要的最小b[j]值,在排序后的b中使用二分查找确定满足条件的元素数量。时间复杂度为O((n+m)log m),空间复杂度O(1)。代码实现了排序和二分查找的高效组合。

m0_73659489的博客 65

Nginx转发post请求变get请求

最近用nginx转发请求,但是明明是post请求,打到服务上确实get请求,body中的参数都没了,于是去查背后详细的原因。 背景 Nginx配置 ip及端口:192.20.81.34:8081 conf关键配置: location /select/dosomething/ { proxy_pass http://xx.xx.xx.xx:18000/select/dosomething/; } 请求连接 http://192.20.81.34:8081/select/doso

qq_29500875的博客 1万+

YOLOv11改进 - 卷积Conv | PATConv(Partial Attention Convolution)部分注意力卷积,在减少计算量的同时融合卷积与注意力的优势 | AAAI 2026

本文提出部分注意力卷积(PATConv)机制,并将其集成到YOLOv11中。传统神经网络中,卷积计算密集,注意力机制全局计算冗余,此前的“部分卷积”会丢失未计算通道的特征价值。PATConv通过“通道拆分 - 并行处理 - 结果拼接”的逻辑,给不同通道分配“擅长的任务”,兼顾局部与全局特征。基于此,它还衍生出PAT_ch、PAT_sp和PAT_sf三种细分模块。此外,还提出了动态部分卷积(DPConv),并构建了新的混合网络家族PartialNet。我们将PATConv代码集成到YOLOv11中,实验表明,

魔改工程师的博客 1085

【nginx实现请求转发】

nginx实现请求转发nginx实现请求转发 nginx实现请求转发 反向代理适用于很多场合,负载均衡是最普遍的用法。 nginx 作为目前最流行的web服务器之一,可以很方便地实现反向代理。 nginx 反向代理官方文档: NGINX REVERSE PROXY 当在一台主机上部署了多个不同的web服务器,并且需要能在80端口同时访问这些web服务器时,可以使用 nginx 的反向代理功能: 用 nginx 在80端口监听所有请求,并依据转发规则(比较常见的是以 URI 来转发)转发到对应的web服务器上

weixin_43641951的博客 1718

基于深度学习DNN LSTM网络的光伏发电量预测 完整代码数据 可直接运行

基于深度学习DNN LSTM网络的光伏发电量预测 完整代码数据 可直接运行

2079

2026年海能达嵌入式岗位面试题集(含参考答案)

本文总结了嵌入式系统开发中的常见面试题,涵盖项目经验、外设接口、存储系统、编程基础、操作系统等核心模块。主要内容包括:1)项目核心经历的硬件/软件架构及问题解决思路;2)SPI、I2C等接口协议的时序特点与应用要点;3)NAND Flash存储管理中的ECC校验原理和文件系统对接方案;4)USB设备枚举流程等关键知识点。这些题目针对嵌入式岗位的技术考察重点,既包含底层硬件接口细节,也涉及系统级设计与优化策略,全面考察开发者的嵌入式系统能力。

Open 362

nginx请求转发被拒绝_nginx 请求转发

场景:原:nginx请求转发有关问题原:nginx请求转发问题这段时间系统上出现一个很怪异现象,即生成很多重复订单,从生成时间上看,有同一时间的,也有相隔几分钟的。开始怀疑是程序上的问题,排查程序,没有找到问题原因。进而怀疑是nginx的配置问题,那么先需要证明这个怀疑。要证明这个怀疑就得找到--通过nginx的http请求与生成订单的关联,即客户端的一个请求,在nginx上被处理了两次。办法:加...

weixin_39940901的博客 1211

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

彻底搞懂Nginx三大指令:location、rewrite、proxy_pass请求转发机制

彻底搞懂Nginx三大指令:location、rewrite、proxy_pass请求转发机制

https://ophome.blog.youkuaiyun.com,在IT行业有多年的工作经验,尤其是在Python、Linux、负载均衡、Nginx和服务器运维等领域。 2009

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

nginx 的请求转发算法,如何配置根据权重转发

Nginx 的请求转发功能是通过upstream模块来实现的。在这个模块中,Nginx 定义了后端服务器的列表,并根据特定的负载均衡算法来选择将请求转发到哪个服务器。轮询(Round Robin):这是默认的负载均衡算法,Nginx 会依次将请求轮流转发到后端服务器上。每个服务器获得的请求数量大致相同。最少连接(Least Connections):Nginx 会将请求转发到当前处理连接数最少的服务器。这个算法适用于长连接的场景,例如 WebSocket。IP 哈希(IP Hash)

Flying_Fish_roe的博客 997

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

nginx实现请求转发的方法简介

反向代理适用于很多场合,负载均衡是最普遍的用法。   nginx 作为目前最流行的web服务器之一,可以很方便地实现反向代理。   nginx 反向代理官方文档: NGINX REVERSE PROXY   当在一台主机上部署了多个不同的web服务器,并且需要能在80端口同时访问这些web服务器时,可以使用 nginx 的反向代理功能: 用 nginx 在80端口监听所有请求,并依据转发规则(比较...

weixin_44400506的博客 1588

nginx:Nginx是否支持将请求压缩后转发至上游服务器

这是一个容易被误解的重要特性。作为阿里/字节跳动级别的架构师,需要深入理解其底层限制及替代方案。:通过混合压缩方案,节省带宽成本540万/年,服务可用性提升至99.995%。这印证了系统级优化的商业价值。在日均万亿级请求的推荐系统中,Lua压缩导致Nginx集群CPU使用率突破80%。:某内容推荐系统实施后,CPU负载下降42%,TP99稳定在50ms内。转发压缩数据(Content-Encoding: gzip)在分布式环境下,压缩/解压缩过程可能引发数据错乱。POST /api (未压缩数据)

weixin_43290370的博客 972
上一篇: 远程服务调用的一些注意事项
下一篇: 简单聊下阿里云DNS劫持事件
高冷小伙
博客等级 码龄7年 223粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高冷小伙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值