微服务实战系列之Nginx(技巧篇)

前言

今天北京早晨竟然飘了一些"雪花",定睛一看,似雪非雪,像泡沫球一样,原来那叫"霰"

自然中,雨雪霜露雾,因为出场太频繁,认识门槛较低,自然不费吹灰之力,即可享受它们的"恩泽"

这个霰,就不一样了,可能容易被忽视,更可能容易被当成雪,自然不会给人们留下深刻的印象。

所以,博主私自为这个,提个建议:"欲留深刻在人间,必有一技抚人心"

叙述到此,言归正传,博主继续向各位盆友分享微服务系列文章,深耕细作方的人心。

接下来,按博主的风格,继续拉出自家的队伍,欢迎三连,有求必应:

昨日,博主已对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新增允许跨域的配置即可。

powershell 复制代码
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模块是否已安装,再确认端口是否开放防火墙,最后检查域名配置是否正常。

配置导致如下:

powershell 复制代码
server{
	listen 443 ssl; //服务端口,支持ssl协议
	server_name  www.xxxx.com;
	ssl_certificate      /ssl/xxx.pem; # 证书文件pem
	ssl_certificate_key  /ssl/xxx.key; # 证书文件key
}
Q7:配置反向代理服务后,数据返回不完整

比如接口报文太大,但是Nginx默认的支持的报文是有限的。可通过调整location下的参数:
proxy_buffers
proxy_buffer_size

Q8:配置了反向代理服务后,http状态显示超时

一般我们可以使用Nginx实现服务转发,即Nginx是代理服务,服务端可能是另外一个节点,首先应该检查Nginx服务节点与服务端节点是否网络联通。也可以合理设置一个相对合适的超时时间,不宜过长不易太短。

Q9:遇到502怎么办?

这个一般是后端服务问题导致。可从"肇事"后端服务中,通过日志中排查失败原因,确定问题所在。

Q10:如何正确的查看日志,排查问题

Nginx启动运行后,一般有2个日志:accesserr

access通常是请求nginx的日志记录,无论正常或异常,均可查找;

err通常是错误日志记录,从中可查相关的运行记录和http响应状态情况;

最后,博主来一张Nginx原理架构图,解决问题必抓本质,不然容易"捉襟见肘,顾此失彼"。


结语

综上所述,各位盆友在使用Nginx过程中,难免遇到一些棘手或者更复杂的问题,如果恰好是生产故障,那更惊心动魄了。博主精心为各位盆友选择10个易错环节或情景,希望可以为你们所用,助你们一臂之力。

时间有限,知识无涯,Nginx到此结束,下一篇主题是什么?各位盆友拭目以待。

博主有空接着聊,欢迎追订哈哈,不胜感激~

相关推荐
兵慌码乱11 小时前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
Avan_菜菜15 小时前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SamDeepThinking1 天前
Java微服务练习方式
java·后端·微服务
米丘4 天前
微前端之 Web Components 完全指南
微服务·html
ping某5 天前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
霸道流氓气质7 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
坏孩子的诺亚方舟7 天前
FPGA系统架构设计实践15_高云Arora V系列时钟体系
fpga开发·系统架构
ofoxcoding7 天前
在AI API聚合平台配置DeepSeek V3.2提示词缓存实战:快速接入与成本优化指南
人工智能·spring·缓存·ai
桥田智能7 天前
桥田智能 QT-650S:面向白车身焊装的 800kg 重载快换解决方案
开发语言·qt·系统架构
難釋懷7 天前
Nginx反向代理中的容错机制
运维·nginx