头图
事件起因是公司阿里云测试域名解析失败,通过与阿里云售后联系处理排查,发现是由于80和443端口不可达导致。随后联系云服务器运营商,经过简单沟通之后,即使在配置了安全组情况下,还是存在一样问题。最终问题定位是云服务器中没有对80和443端口的监听,经过分析最终的生产服务器问题定位,是由于开发服务器(测试机)上Nginx服务宕机导致。此处比较尴尬一点是,之前具体服务器配置如何,配置文件在哪里并不清楚,所以问题有些许棘手。

Nginx程序结构查看

使用命令:

rpm -ql nginx

命令详细解释:

rpm 是Red Hat Package Manager(红帽软件包管理器)的缩写,它是一个在Linux系统中用于安装、查询、升级、移除软件包的工具。

-q 选项表示查询(query)已安装的软件包。它用于获取有关已安装软件包的信息,而不是对软件包进行安装或卸载等操作。

-l 选项与-q一起使用时,表示列出(list)指定软件包的所有文件。也就是说,rpm -ql nginx命令的作用是查询已安装的nginx软件包中包含的所有文件,并将这些文件的路径等信息显示出来。

使用这个命令只会实现对原有服务的查询,不会影响现有运行的服务状态

下面展示的是具体的内容,对其中主要查看的还是nginx.conf文件

image-20250314101803561

问题排查思路

查看Nginx版本与安装位置

查看版本:

nginx -v

image-20250314102158767

查看位置:

which nginx

image-20250314102303125

查看服务运行状态与监听端口情况(这里展示的是启动成功之后的情况)

查看服务运行状态:

ps -ef | grep nginx 或者 systemctl status nginx

image-20250314102423030

image-20250314102532941

查看服务端口监听情况:

netstat -tlnp | grep ':80'

image-20250314102722506

尝试服务进行启动

使用命令:

systemctl start nginx

下图展示的是nginx配置文件有误,由于一开始在该路径之下都是文件都没有,该文件是新增的所以接下来的问题在于如何找到对应的配置文件内容。

image-20250314103008152

如何找到Nginx配置文件内容?

在使用 Nginx 时,更新静态资源文件(如 HTML、CSS、JS、图片等)通常不需要重启 Nginx 服务,因为 Nginx 本身不会对静态资源进行缓存。只要将新的静态资源文件上传到服务器的相应目录中,Nginx 就会直接提供最新的文件内容。还有就是后续找到的配置文件中关于资源文件地址这块是使用对象存储服务来进行~

Nginx服务的重要原理之一,就是会根据配置文件中配置的location位置块确认找到资源路径信息,此时就可以使用路径查找系统中资源文件具体存放信息得到配置文件信息。

假设资源文件地址是:/opt/java/point/point_H5/build/h5

查看命令,使用 grep/etc 目录下查找:

grep -r "/opt/java/point/point_H5/build" /etc 2>/dev/null

image-20250314111936366

/ 根目录下查找,同时去掉--exclude-dir 排除某些不必要的目录:

grep -r "/opt/java/point/point_H5/build" / --exclude-dir={proc,sys,dev,run} 2>/dev/null

image-20250314112130609

经过具体查看可以发现上述圈中文件类似Ngixn具体配置,便可以在上述报错文件丢失位置建立nginx.conf文件。并使用

nginx -t

命令进行测试查看配置文件信息是否正确。

image-20250314112322367

该错误表明在 nginx.conf 中配置了 请求限流 (limit_req_zone),但是 limit_req_zone 语句缺少 共享内存大小 参数,导致 nginx 解析失败。

需要在配置文件中配置具体的信息,问题得到完美解决~

image-20250314112439150

联系我

  • 公众号:舒一笑的架构笔记
  • 微信:Tobeabetterman1001
  • 邮箱:yixiaoshu88@163.com
  • 博客:www.shuyixiao.cloud

舒一笑不秃头
37 声望122 粉丝

生成式AI应用工程师(高级)认证