微服务实战系列之Nginx(技巧篇)
前言
今天北京早晨竟然飘了一些“雪花”,定睛一看,似雪非雪,像泡沫球一样,原来那叫“霰”。
自然中,雨雪霜露雾,因为出场太频繁,认识门槛较低,自然不费吹灰之力,即可享受它们的“恩泽”。
这个霰,就不一样了,可能容易被忽视,更可能容易被当成雪,自然不会给人们留下深刻的印象。
所以,博主私自为这个霰,提个建议:“欲留深刻在人间,必有一技抚人心”。
叙述到此,言归正传,博主继续向各位盆友分享微服务系列文章,深耕细作方的人心。
接下来,按博主的风格,继续拉出自家的队伍,欢迎三连,有求必应:
- 微服务实战系列之Nginx
- 微服务实战系列之Feign
- 微服务实战系列之Sentinel
- 微服务实战系列之Token
- 微服务实战系列之Nacos
- 微服务实战系列之Gateway
- 微服务实战系列之加密RSA
- 微服务实战系列之签名Sign
昨日,博主已对Nginx—这个微服务中的重量级选手,进行了基本的介绍,无论它作为负载均衡,还是代理服务,抑或缓存服务、web服务,都体现了Nginx的专职能力。那么,在实际应用过程中,通常有哪些技巧需要关注或具备呢?
今日,博主继续对掌握Nginx的必备基本技巧进行逐一解答,希望可以带来帮助。
技巧大观园
Q1:遇到权限异常,怎么办
首先涉及两个用户:一个安装用户,一个运行用户;
安装用户是Nginx安装时的执行用户,比如root或其他,即Nginx的操作用户;
运行用户是Nginx运行的用户,即conf中指定的user;
如果出现权限不允许之类的问题,首先确认这两个用户是否一致,然后逐一验证;
Q2:设置多少个worker合适
Nginx运行机制可以理解为Master-Worker模式,M与W之间是通过信号传递。所以实际上是Worker分摊了执行任务并占用运行的资源。
一般worker的数量与Cpu保持一致,比如4核,则worker_processes可以设置为4;
Q3:遇到跨域问题,怎么办
跨域问题一般出现在前后端分离模式的架构,由于前后端服务端口不一致导致被浏览器拦截。可通过conf新增允许跨域的配置即可。
location /api {add_header 'Access-Control-Allow-Origin' '*'; //允许跨域proxy_pass http://localhost:9999;
}
Q4:访问静态资源404,怎么办
在我们使用过程中,经常会出现请求资源无效或404的问题,虽简单,却极易出错。如果出现了怎么办,稍安勿躁,静下心慢慢找原因。
- 排查设置的root目录是否正确;
- 排查设置的root目录下,是否存在相关资源;
- 排查是否缓存导致,比如升级版本,未达预期,可以尝试先清理缓存;
Q5:搭建负载均衡时,流量分配不均甚至流量在单一节点集中
遇到此类问题,首先应该想到权重是否合理,如果权重配置无问题,继续排查网络原因。比如负载的集群间是否网络联通,或者Nginx与每个节点的网络是否联通。
此刻最常用的武器就是telnet ip port。
Q6:配置了SSL证书,https无法访问
https服务作为微服务界的标配和
“宠儿”,必须掌握如何使用。
https默认端口443,在conf中server模块配置,当然nginx可同时支持http和https。
如果无法访问,首先检查证书是否有效,ssl模块是否已安装,再确认端口是否开放防火墙,最后检查域名配置是否正常。
配置导致如下:
server{listen 443 ssl; //服务端口,支持ssl协议server_name www.xxxx.com;ssl_certificate /ssl/xxx.pem; # 证书文件pemssl_certificate_key /ssl/xxx.key; # 证书文件key
}
Q7:配置反向代理服务后,数据返回不完整
比如接口报文太大,但是Nginx默认的支持的报文是有限的。可通过调整location下的参数:
proxy_buffers
proxy_buffer_size
Q8:配置了反向代理服务后,http状态显示超时
一般我们可以使用Nginx实现服务转发,即Nginx是代理服务,服务端可能是另外一个节点,首先应该检查Nginx服务节点与服务端节点是否网络联通。也可以合理设置一个相对合适的超时时间,不宜过长不易太短。
Q9:遇到502怎么办?
这个一般是后端服务问题导致。可从
“肇事”后端服务中,通过日志中排查失败原因,确定问题所在。
Q10:如何正确的查看日志,排查问题
Nginx启动运行后,一般有2个日志:
access和err。
access通常是请求nginx的日志记录,无论正常或异常,均可查找;
err通常是错误日志记录,从中可查相关的运行记录和http响应状态情况;

最后,博主来一张Nginx原理架构图,解决问题必抓本质,不然容易“捉襟见肘,顾此失彼”。
结语
综上所述,各位盆友在使用Nginx过程中,难免遇到一些棘手或者更复杂的问题,如果恰好是生产故障,那更惊心动魄了。博主精心为各位盆友选择10个易错环节或情景,希望可以为你们所用,助你们一臂之力。
时间有限,知识无涯,Nginx到此结束,下一篇主题是什么?各位盆友拭目以待。
博主有空接着聊,欢迎追订哈哈,不胜感激~

相关文章:
微服务实战系列之Nginx(技巧篇)
前言 今天北京早晨竟然飘了一些“雪花”,定睛一看,似雪非雪,像泡沫球一样,原来那叫“霰”。 自然中,雨雪霜露雾,因为出场太频繁,认识门槛较低,自然不费吹灰之力,即可享受…...
好工具|datamap,一个好用的地图可视化Excel插件,在Excel中实现地理编码、拾取坐标
在做VRP相关研究的时候,需要对地图数据做很多处理,比如地理编码,根据“重庆市沙坪坝区沙正街174号”这样的一个文本地址知道他的经纬度;再比如绘制一些散点图,根据某个位置的经纬度在地图上把它标注出来。还有有的时候…...
Java——继承
继承是面向对象编程的三大特征之一,它让我们更加容易实现对已有类的扩展、更加容易实现对现实世界的建模。 继承有两个主要作用: 代码复用,更加容易实现类的扩展方便建模 继承的实现 继承让我们更加容易实现对类的扩展。比如我们定义了人…...
十、sdl显示yuv图片
前言 SDL中内置加载BMP的API,使用起来会更加简单,便于初学者学习使用SDL 如果需要加载JPG、PNG等其他格式的图片,可以使用第三方库:SDL_image 测试环境: ffmpeg的4.3.2自行编译版本windows环境qt5.12sdl2.0.22&…...
Docker Nginx容器部署vue项目
Docker Nginx容器部署vue项目 文章目录 Docker Nginx容器部署vue项目1. 前提2. 下载nginx镜像3. 编写nginx.conf配置文件4. 编写构建命令5. vue项目上传 1. 前提 Docker服务已部署 2. 下载nginx镜像 首先查看有没有nginx镜像 docker images没有的情况下再进行下载 docker …...
【深度学习】如何找到最优学习率
经过了大量炼丹的同学都知道,超参数是一个非常玄乎的东西,比如batch size,学习率等,这些东西的设定并没有什么规律和原因,论文中设定的超参数一般都是靠经验决定的。但是超参数往往又特别重要,比如学习率&a…...
详解—C++三大特性——多态
目录 一. 多态的概念 1.1 概念 二. 多态的定义及实现 2.1多态的构成条件 2.2 虚函数 2.3虚函数的重写 2.3.1虚函数重写的两个例外: 1. 协变(基类与派生类虚函数返回值类型不同) 2. 析构函数的重写(基类与派生类析构函数的名字不同) 2.4 C11 override 和 f…...
用idea搭建一个spring cloud微服务项目
以下是使用 IntelliJ IDEA 搭建 Spring Cloud 微服务项目的步骤: 创建一个新的 Maven 项目。 在 pom.xml 文件中添加以下依赖: <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-…...
SpringBoot——启动类的原理
优质博文:IT-BLOG-CN SpringBoot启动类上使用SpringBootApplication注解,该注解是一个组合注解,包含多个其它注解。和类定义SpringApplication.run要揭开SpringBoot的神秘面纱,我们要从这两位开始就可以了。 SpringBootApplicati…...
Rust语言入门教程(七) - 所有权系统
所有权系统是Rust敢于声称自己为一门内存安全语言的底气来源,也是让Rust成为一门与众不同的语言的所在之处。也正是因为这个特别的所有权系统,才使得编译器能够提前暴露代码中的错误,并给出我们必要且精准的错误提示。 所有权系统的三个规则…...
【MATLAB源码-第89期】基于matlab的灰狼优化算法(GWO)无人机三维路径规划,输出做短路径图和适应度曲线
操作环境: MATLAB 2022a 1、算法描述 灰狼优化算法(Grey Wolf Optimizer, GWO)是一种模仿灰狼捕食行为的优化算法。灰狼是群居动物,有着严格的社会等级结构。在灰狼群体中,通常有三个等级:首领ÿ…...
线程池的饱和策略有哪些?
线程池的饱和策略是指当线程池中的任务队列已满时,线程池如何处理新提交的任务。常见的饱和策略有以下几种: 阻塞策略 阻塞策略是指当线程池中的任务队列已满时,新提交的任务会等待队列中有空闲位置后再执行。这种策略可以避免过多的任务被…...
Git设置多个仓库同时推送
Git设置多个仓库同时推送 添加 在Git中,有时我们需要将同一份代码推送到不同的远程仓库,只是URL地址不同。 下面是一种优化的方法来设置多个仓库同时推送: # 添加一个新的远程仓库 git remote set-url --add origin2 新的仓库地址这样&am…...
前端入职环境安装
前端入职 后环境安装 ,内函 nodenvmgit微信开发者工具vscode 的安装包 一.node安装-js运行环境 1.node下载,下载地址Node.js 2.配置淘宝镜像 npm config set registry https://registry.npmmirror.com/ 3.查看配置 npm config list 二.nvm安装-切…...
《金融科技行业2023年专利分析白皮书》发布——科技变革金融,专利助力行业发展
金融是国民经济的血脉,是国家核心竞争力的重要组成部分,金融高质量发展成为2023年中央金融工作的重要议题。《中国金融科技调查报告》中指出,我国金融服务业在科技的助力下,从1.0时代的“信息科技金融”、2.0时代的“互联网金融”…...
Introducing the Arm architecture
快速链接: . 👉👉👉 个人博客笔记导读目录(全部) 👈👈👈 付费专栏-付费课程 【购买须知】:【精选】ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 — 适合小白入门【目录】ARMv8/ARMv9架构高级进阶-[目录]👈👈👈 — 高级进阶、小白勿买【加群】ARM/TEE…...
Python 使用SQLAlchemy数据库模块
SQLAlchemy 是用Python编程语言开发的一个开源项目,它提供了SQL工具包和ORM对象关系映射工具,使用MIT许可证发行,SQLAlchemy 提供高效和高性能的数据库访问,实现了完整的企业级持久模型。 ORM(对象关系映射࿰…...
【nlp】4.3 nlp中常用的预训练模型(BERT及其变体)
nlp中常用的预训练模型 1 当下NLP中流行的预训练模型1.1 BERT及其变体1.2 GPT1.3 GPT-2及其变体1.4 Transformer-XL1.5 XLNet及其变体1.6 XLM1.7 RoBERTa及其变体1.8 DistilBERT及其变体1.9 ALBERT1.10 T5及其变体1.11 XLM-RoBERTa及其变体2 预训练模型说明3 预训练模型的分类1…...
IDEA中 java: 警告: 源发行版 11 需要目标发行版 11 如何解决
步骤1找到项目结构,下面有两种方式 步骤2找到 模块中对应的项目,修改对应的源的语言级别和依赖的模块SDK(M) 步骤3,启动一下,看有无问题, 步骤4,去文件-->设置-->构建、执行、部署-->编译器-->…...
APP测试的测试内容有哪些,常见的Bug分类介绍!
对于产品的手机项目(应用软件),主要是进行系统测试。而针对手机应用软件APP的系统测试,我们通常从如下几个角度开展:功能模块测试、兼容性测试、安装和卸载测试、软件更新测试、性能测试、用户体验性测试、交叉事件测试…...
嵌入式智能饮水机设计:STM32与语音交互实践
1. 项目背景与需求分析作为一名嵌入式开发工程师,我最近完成了一个专门为视障人士设计的智能饮水机项目。这个项目的灵感来源于我的一位视障朋友在使用传统饮水机时遇到的种种不便——他常常因为无法判断水温而被烫伤,或者因为不知道水杯是否对准出水口而…...
Vue.js核心原理之VNode如何映射真实DOM元素流程全解
VNode是Vue中描述DOM结构的轻量、可比较、不可变的JavaScript对象,包含tag、data、children等字段,不直接操作DOM,其真实DOM绑定和更新由patch过程完成。Vue.js 中的 VNode(虚拟节点)是实现响应式更新和高效 DOM 操作的…...
Switch破解新选择:大气层系统稳定版完整安装与优化指南
Switch破解新选择:大气层系统稳定版完整安装与优化指南 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 想要让你的Switch焕发新生,体验自制软件和游戏优化的无限可能…...
jsTree完整生态系统指南:插件、主题和工具全解析
jsTree完整生态系统指南:插件、主题和工具全解析 【免费下载链接】jstree jquery tree plugin 项目地址: https://gitcode.com/gh_mirrors/js/jstree jsTree是一个功能强大的jQuery树形插件,专为现代Web应用设计,提供了完整的树形结构…...
2026届毕业生推荐的十大AI辅助论文平台解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 于学术写作范畴之内,论文AI工具已然变成提高研究效率的关键辅助法子。当下主流工…...
2025最权威的AI辅助写作平台推荐榜单
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智能工具在学术写作范畴,已然成了提高效率的关键辅助,以下推举五…...
GeoAI实战:如何用Python和QGIS打造智能交通预测系统(附代码)
GeoAI实战:如何用Python和QGIS打造智能交通预测系统(附代码) 最近在帮某省会城市优化公交调度系统时,发现传统GIS工具处理实时交通数据就像用算盘计算火箭轨道——理论可行但实操吃力。这促使我探索出一套结合QGIS可视化优势与Pyt…...
改进蚁群算法结合Dijkstra与MAKLINK图理论实现二维空间最优路径规划
【改进蚁群算法】/蚁群算法/Dijkstra算法/遗传算法/人工势场法实现二维/三维空间路径规划 本程序为改进蚁群算法Dijkstra算法MAKLINK图理论实现的二维空间路径规划 算法实现: 1)基于MAKLINK图理论生成地图,并对可行点进行划分; 2…...
如何快速解锁WeMod Pro功能:Wand-Enhancer完整免费指南
如何快速解锁WeMod Pro功能:Wand-Enhancer完整免费指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer Wand-Enhancer是一款强大的开源工具&…...
实时控制循环示例
LCC-S无线电能传输pi移相控制输出电压,效果很棒 SS结构,与其他低阶高阶拓扑也可以做 SS拓扑最近在捣鼓无线电能传输系统时,意外发现LCC-S拓扑搭配π型移相控制,输出效果堪比美颜相机里的磨皮功能。这货不仅能把输出电压纹波压得比…...

