微服务实战系列之Nginx
前言
Nginx?写了那么多文章,为什么今天才轮到它的表演?那是因为它实在太重要了,值得大书特书,特别对待。
当我们遇到单点瓶颈,第一个idea是?Nginx;
当我们需要反向代理,第一个idea是?Nginx;
当我们需要静态部署,第一个idea是?Nginx;
当我们需要透传服务,第一个idea是?Nginx;
好了好了,不再罗列了,博主手都麻了…
当我们遇到一件趁手的
武器,是不是愿意找一个合适的“对手”,练一练?
当我们遇到一件棘手的问题,是不是愿意找一个熟练的“队友”,试一试?
答案是肯定的,毕竟我们都愿意“百尺竿头,更进一步”,不希望“按部就班,坐以待毙”。
在Nginx正式表演前,博主首先让它的“队友们”报个到,欢迎三连,有求必应:
- 微服务实战系列之Feign
- 微服务实战系列之Sentinel
- 微服务实战系列之Token
- 微服务实战系列之Nacos
- 微服务实战系列之Gateway
- 微服务实战系列之加密RSA
- 微服务实战系列之签名Sign
话锋一转,请允许博主带着大家熟悉Nginx,探索它的奥秘。

一、前世
Nginx是一款轻量级的Web 服务器以及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上Nginx的并发能力在同类型的网页服务器中表现较好。
通过一段标准语言,我们可以大致了解到Nginx几个特征:
1. 反向代理
2. Web服务器
3. 邮件代理服务
4. 并发
5. 轻量级
当然,博主尝试将其翻译成工程实践语言,大致可以包括以下几个功能:
1. 代理服务(反向、邮件)
2. Web服务(面向前端)
3. 负载均衡(高并发)
4. 缓存服务(静态资源)
通过以上的应用场景,博主继续带着大家剖析Nginx,探究一下它为何如此迷人。
二、今生
1. 代理服务
谈到代理服务,各位盆友首先想到什么?
比如小花一个消息,今天没空,让你帮她买个零食…
比如小芳一通电话,今天请假,让你帮她取个快递…
诸如此类,皆算代理的范畴,原因是什么?因为不管小花小芳,还是你,都能够基于同一个方法完成一件事。通俗讲,就是“代劳”。这个时候,小花小芳都是采用了代理服务,而且是正向代理,那么你就是“正向代理服务器”。

既然有正向代理,自然就有反向代理了,因为讲究对称嘛(暗然自喜)~
反向代理是怎么回事?无非是你要吃的,我事先替你备齐,你自取。如此这般,方便你我他,相亲相爱一家人。

所以,自从有了代理这个业务,这世上似乎“懒人”变多了,当然生活品质也提高了。
Nginx如何配置代理,可参考以下:
server{location /api/ {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://localhost:8080/; //这句很关键}
}
2. Web服务
提到Web服务,博主首先会联想到从早年的Apache、IIS,到如今的Nginx、Tomcat、WebLogic等等。不禁有感而发:“变化的始终是工具,不变的是永恒的服务”。
Nginx作为Web服务器,主要做什么呢?
比如部署一套vue,比如上传一组图片资源等等,可以通过http访问即可。如果不清楚怎么使用,可以参考以下配置,指定访问目录即可:
server{location / {root /usr/local/html; //这句很关键try_files $uri $uri/ /index.html;index index.html index.htm;}
}
3. 负载均衡
负载均衡?好像在哪里提过?对了, 网关。如有兴趣,请回看博主相关介绍。
正因为Nginx有这个作用,所以在微服务中,Nginx的任务相当艰巨,所谓能力越大,责任越大,当然期望越高。

如何配置?可参考如下:
http {upstream myserver {server 192.168.1.11:8080 weight=10;//设置权重server 192.168.1.12:8081 weight=10;}server {listen 80;// 默认端口server_name 192.168.1.10;location / {proxy_pass http://myserver;root /usr/local/html;index index.html index.htm;}
}
4. 缓存服务
Nginx也可以做缓存?答案是的。
某些场景下,Nginx需要Worker到服务中获取数据并返回客户端,在高并发场景下,我们可以将这些数据缓存到Nginx中。
如何配置,可参考如下:
http {# 设置缓存路径、目录层级(1:2 表示两个子目录)、内存zone的名字和内存大小# 缓存有效时间、硬盘最大存储大小、缓存文件直接写到cache文件中而不使用temp_pathproxy_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=ngxcache:100m inactive=7d max_size=1g use_temp_path=off;server { proxy_cache ngxcache;proxy_cache_valid 200 304 5m;proxy_cache_valid 301 302 2m;proxy_cache_min_uses 1;# 添加一个响应头,用来标识请求是否命中缓存add_header N-Cache-Status $upstream_cache_status;proxy_cache_methods GET HEAD;proxy_cache_convert_head on;proxy_cache_key $scheme$host$uri$is_args$args;proxy_cache_background_update on;}
}
综上,关于Nginx,博主带着各位盆友进行功能剖析,旨在一文把握它的命脉。如果还需了解更详细的内容,可参考官网文档,了解每个参数的配置的意义,博主不再啰嗦了。
结语
微服务盛行于当下,好比日出东方之时,趁着朝霞,获得希望。
各位盆友,GoodNight!

相关文章:
微服务实战系列之Nginx
前言 Nginx?写了那么多文章,为什么今天才轮到它的表演?那是因为它实在太重要了,值得大书特书,特别对待。 当我们遇到单点瓶颈,第一个idea是?Nginx; 当我们需要反向代理,…...
使用rsync从OpenShift的pod复制文件
环境 Red Hat Enterprise Linux release 8.6 (Ootpa)OCP 4.12.22 准备 安装rsync: yum install rsync 查看pod: [rootapi.kai1123.cp.fyre.ibm.com ~]# oc get pod -n cpd-instance | grep dmc ...... ibm-dmc-1700727413211000-monitor-0 …...
解决Activiti5.22流程图部署在Windows上正常,但在linux上部署后出现中文变方块的问题
总结/朱季谦 楼主最近在做公司的工作流平台,发现一个很无语的事情,Activiti5.22的流程图在Windows环境上部署,是可以正常查看的,但发布到公司的Linux服务器上后,在上面进行流程图在线部署时,发现中文都变成…...
EMG肌肉电信号处理合集(三)
本文主要展示常见的肌电信号预处理的实现,开发环境为matlab。 目录 1 肌电信号低通,高通,带通滤波 2 去除DC 0阶偏置,1阶偏置 3 全波整流 4 信号降采样 5 linear envolope / butterworth 低通滤波器 1 肌电信号低通…...
GitHub桌面版
GitHub桌面版 一、GitHub 桌面版二、clone 仓库三、更新仓库 一、GitHub 桌面版 二、clone 仓库 三、更新仓库...
【广州华锐互动】昆虫3D虚拟动态展示:探索神奇的微观世界
在这个充满科技魅力的时代,我们可以通过各种方式去了解和探索自然界的奥秘。而昆虫作为地球上最为丰富多样的生物群体之一,其独特的生活习性和形态特征一直吸引着人们的目光。 由广州华锐互动开发的昆虫3D虚拟动态展示系统,成为了一种全新的科…...
《QT从基础到进阶·三十六》QWidget实现收缩栏的效果
功能: 1、可以在收缩栏插件中添加界面 2、可以把界面展开或收缩 3、可以用鼠标拖动界面改变界面的排放顺序 源码放在最下方 1、可以在收缩栏插件中添加界面 virtual void addWidget(QWidget* widget, const QString& label, const QIcon& icon QIcon())…...
运行软件报错找不到vcruntime140.dll无法继续执行代码怎么办-6个解决方法
vcruntime140.dll是一个由Microsoft Visual C提供的运行时库文件,它为许多Microsoft Visual Studio开发的应用程序提供了必要的支持。这个文件对于许多Windows应用程序的正常运行至关重要。然而,有时会出现vcruntime140.dll缺失的问题,导致应…...
从Discord的做法中学习 — 使用Golang进行请求合并
正如你可能之前看到的,Discord去年发布了一篇有价值的文章,讨论了他们成功存储了数万亿条消息。虽然有很多关于这篇文章的YouTube视频和文章,但我认为这篇文章中一个名为“数据服务为数据服务”的部分没有得到足够的关注。在这篇文章中&#…...
【教3妹学编程-算法题】统计和小于目标的下标对数目
2哥 : 3妹,OpenAI的宫斗剧迎来了大结局!OpenAI宣布阿尔特曼复职CEO,董事会重组 3妹:啊?到底谁才是幕后操纵者啊,有咩有揪出来 2哥 : 也不是很清楚,据说在被开除的几周前,前CEO曾谴责…...
OSG粒子系统与阴影-雾效模拟(1)
虚拟现实中有很多效果,如雨效、雪效、雾效等,这些都可以通过粒子系统来实现。一个真实的粒子系统的模式能使三维场景达到更好的效果。 本章对OSG粒子系统的使用以及生成自定义粒子系统的方法进行了详细介绍最后还附带说明了阴影的使用方法。在实时的场景…...
Windows power shell for循环
有时候需要重复执行某个shell命令 for($i1;$i -lt 10;$i$i1){echo $i}如果是cmd for /l %i in (1,1,5) do echo %i...
GIT实践与常用命令---回退
实践场景 场景1 回退提交 在日常工作中,我们可能会和多个同事在同一个分支进行开发,有时候我们可能会出现一些错误提交,这些错误提交如果想撤销,可以有两种解决办法:回退( reset )、反做(revert) keywords:reset、rev…...
Python-Django的“日志功能-日志模块(logging模块)-日志输出”的功能详解
01-综述 可以使用Python内置的logging模块来实现Django项目的日志记录。 所以与其说这篇文章在讲Django的“日志功能-日志模块-日志输出”,不如说是在讲Pthon的“日志功能-日志模块-日志输出”,即Python的logging模块。 下面用一个实例来进行讲解。 …...
C现代方法(第23章)笔记——库对数值和字符数据的支持
文章目录 第23章 库对数值和字符数据的支持23.1 <float.h>: 浮点类型的特性23.2 <limits.h>: 整数类型的大小23.3 <math.h>: 数学计算(C89)23.3.1 错误23.3.2 三角函数23.3.3 双曲函数23.3.4 指数函数和对数函数23.3.5 幂函数23.3.6 就近舍入、绝对值函数和取…...
NSGA-II求解微电网多目标优化调度(MATLAB)
一、NSGA-II简介 NSGA-Ⅱ算法是Kalyanmoy Deb等人于 2002年在 NSGA 的基础上提出的,它比 NSGA算法更加优越:它采用了快速非支配排序算法,计算复杂度比 NSGA 大大的降低;采用了拥挤度和拥挤度比较算子,代替了需要指定的…...
7-9 jmu-python-班级人员信息统计
7-9 jmu-python-班级人员信息统计 分数 15 作者 郑如滨 单位 集美大学 输入a,b班的名单,并进行如下统计。 输入格式: 第1行::a班名单,一串字符串,每个字符代表一个学生,无空格,可能有重复字符。 第2行:&am…...
Doris分区与分桶(八)
接上篇----------Doris 建表示例 Doris 支持两层的数据划分。第一层是 Partition,支持 Range 和 List 的划分方式。第二层是 Bucket(Tablet),仅支持 Hash 的划分方式。 也可以仅使用一层分区。使用一层分区时,只支持…...
mac VScode 添加PHP debug
在VScode里面添加PHP Debug 插件,根据debug描述内容操作 1: 随意在index里面写个方法,然后用浏览器访问你的hello 方法,正常会进入下边的内容 class IndexController {public function index(){return 您好!这是一个[api]示例应用;}public function hello() {phpin…...
53.最大子数组和
原题链接:53.最大子数组和 思路: 只需要判断当前和小于负数 如果小于则舍弃掉子序列即可, 子序列开头从下一个下标位置开始。 全代码: class Solution { public:int maxSubArray(vector<int>& nums) {int max_len I…...
小白也能装的 OpenClaw 一键启动即用
前言 OpenClaw 2.6.6 作为开源 AI 智能体工具,支持本地运行、可视化操作,可通过自然语言指令完成文件整理、浏览器自动化、数据提取等电脑操作,适配 Windows 多版本系统,部署流程简洁,适合办公场景与技术爱好者使用。…...
5大核心功能揭秘:Pearcleaner如何成为macOS系统清理的终极解决方案
5大核心功能揭秘:Pearcleaner如何成为macOS系统清理的终极解决方案 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 在macOS系统中,应…...
2026年污水处理用聚丙烯酰胺:权威定义与横向数据解析
2026年,当我们深入探讨污水处理,聚丙烯酰胺作为絮凝剂的选择已不再是简单的品牌采购。笔者发现,行业焦点正从模糊的厂家宣传转向清晰的参数对标与性能评估。这种转变背后,是用户对处理效率、成本控制及长期稳定性的更高追求。因此…...
【20年DevOps老兵亲授】Docker跨架构调试的3层抽象模型:底层指令集差异、中间层运行时适配、上层应用行为漂移
第一章:Docker跨架构调试的3层抽象模型总览Docker跨架构调试并非简单地运行不同CPU指令集的镜像,而是在运行时、构建时与平台描述三个正交维度上协同工作的系统性工程。这三层抽象分别对应**执行层(Runtime Abstraction)**、**构建…...
疾病防治电脑版v考虑放大缴纳开工
此件客户都是啊u覅业务i啊...
Minecraft世界管理终极指南:使用MCA Selector轻松清理和优化区块
Minecraft世界管理终极指南:使用MCA Selector轻松清理和优化区块 【免费下载链接】mcaselector A tool to select chunks from Minecraft worlds for deletion or export. 项目地址: https://gitcode.com/gh_mirrors/mc/mcaselector 你是否曾为Minecraft世界…...
Vectorizer完全指南:从位图到矢量的无损转换方案
Vectorizer完全指南:从位图到矢量的无损转换方案 【免费下载链接】vectorizer Potrace based multi-colored raster to vector tracer. Inputs PNG/JPG returns SVG 项目地址: https://gitcode.com/gh_mirrors/ve/vectorizer 在数字设计领域,图像…...
Windows Cleaner完整指南:三步快速解决C盘爆红,免费高效清理Windows系统垃圾
Windows Cleaner完整指南:三步快速解决C盘爆红,免费高效清理Windows系统垃圾 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows Clea…...
Docker技术入门与实战【2.2】
11.6 CMS内容管理系统(Content Management System,CMS)指的是提供内容编辑服务的平台程序。CMS可以让不懂编程的普通人方便又轻松地发布、更改和管理各类数字内容(主要以文本和图像为主)。下面,笔者将以Wor…...
量子微分方程求解器(DQC)原理与实现
1. 量子微分方程求解器(DQC)原理与设计量子微分方程求解器(Differential Quantum Circuit, DQC)的核心思想是将微分方程的求解问题转化为量子电路的参数优化问题。与传统数值方法相比,量子计算在处理高维微分方程时具有潜在的指数级加速优势。1.1 微分方程的参数化表…...
