news 2026/4/18 4:08:27

nginx常见问题记录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
nginx常见问题记录

之前学习了nginx的基本配置后 个人项目运用过 正好最近公司的项目需要将手上的工作独立拆分出来 于是就需要我这独立配置一套新的nginx 在过程中也发现了不少之前没注意到的问题 (所以说实践还是检验问题的唯一方法啊 汗(lll¬ω¬) )话不多说 我们快速进入正题

1. 关于时间相关设置

我们公司的架构是有个上层的nginx服务器 然后转发到我们前端部署的nginx服务器 之前一直以为上层服务器只负责转发到前端的nginx 配置并不会互相影响 但是在实际操作中才意识到 当上层服务器设置时间 比如proxy_send_timeout proxy_read_timeout 等小于 缓存服务器时 则会影响,接口会报超时,所以要注意上层服务器最好是不要设置时间,如果设置时间一定要比缓存服务器的时间大

2.关于文件权限

之前在测试环境部署的时候一直是配置user root 但是在生产环境里面并没有配置 结果导致试运行的时候 文件上传超过一定大小就直接报错了 后来发现 文件下载的时候也有这个问题 经过科学上网了解到 nginx 默认proxy_buffering 是开启的状态就是说对于文件流类型超过设置的大小proxy_buffer_size 缓冲区大小 会将其存放在nginx的临时文件这个值只会走应用的前端服务器 不会根据上流服务器的设置变化路径是在proxy_temp 如果没有设置 user root 在配置了nginx 进行reload以后 文件的属主会变成nobody从而接口在超过一定大小的时候由于没有写入临时文件的权限就会报错,而下载则是会将后端返回的base64直接截断问题排查:可以通过ls- l 查看文件的权限码 属组 属主 可以通过chown -R 属主:属组 文件名 修改 chmod -R 权限码 文件名 进行权限码的修改 通常使用755

3.关于nginx直接执行不带sudo 报文件权限错误(仅用于本地开发环境和测试环境!!,生产环境还是需要sudo运行,因为master必须是root权限,才能绑定80 443端口)

前提:如果某些情况下 不能修改nginx.conf主配置文件的user

whoami查看当前用户

ls - l查看报错文件的权限 属主 属组

将当前用户添加到文件的属组

sudo usermod -a -G 【属组】 $(whoami)

newgrp 【属组】使配置生效

再看下当前文件的权限码 依然使用ls -l 查看第一列

权限码含义:【所有者权限】-【所属组权限】-【普通用户权限】

将所属组权限改为可读写chmod -R 644 【文件名】

还需要注意:当conf里设置user后 直接运行命令 提示the "user" directive makes sense only if the master process runs with super-user privileges是因为在设置user时 文件权限只能为root,此时可以进行隐式提权:1. 将运行的二进制文件权限改为root:root 2.添加 setuid 权限 给普通用户提权 chmod u+s 运行的二进制文件

4. nginx的热部署

这个问题是在部署jenkins 的时候 发现有可能已经 jenkins和当前版本的java 不对应 或者说当前发布的版本已经不支持已经安装的过旧版本 所以需要进行版本升级 从而联想到了之前看过的nginx 热部署场景 (因为之前一直没理解说为什么会需要nginx 版本升级) 从而特此再梳理下

1.将当前的nginx 二进制文件cp备份

2.将新的nginx二进制cp到原有的nginx 二进制文件路径

3.启动新的nginx进程kill USR2 <当前master进程的pid>

4.停止旧进程kill WINCH <旧master进程的pid 即 执行kill USR2之前的master 进程的pid>

5.如果热部署错误需要版本回退 可以对旧主进程发送 kill HUP 对新主进程 发送kill QUIT

nginx -s reload 等价于 kill HUP

nginx -s reopen 等价于 kill USR1

关于nginx相关配置 见笔者另一篇文章

https://blog.csdn.net/goldfish_333/article/details/160230085?sharetype=blogdetail&sharerId=160230085&sharerefer=PC&sharesource=goldfish_333&spm=1011.2480.3001.8118

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 4:03:14

3步配置HideMockLocation:解决Android应用位置检测的终极方案

3步配置HideMockLocation&#xff1a;解决Android应用位置检测的终极方案 【免费下载链接】HideMockLocation Xposed module to hide the mock location setting. 项目地址: https://gitcode.com/gh_mirrors/hi/HideMockLocation 你是否在使用位置模拟工具时频繁遭遇应用…

作者头像 李华
网站建设 2026/4/18 4:02:15

Path of Building:流放之路Build规划器的三大创新突破

Path of Building&#xff1a;流放之路Build规划器的三大创新突破 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding 在《流放之路》这款以复杂数值系统著称的动作RPG中&…

作者头像 李华
网站建设 2026/4/18 4:00:13

be-a-hacker工具开发实践:从需求分析到代码实现的全流程

be-a-hacker工具开发实践&#xff1a;从需求分析到代码实现的全流程 【免费下载链接】be-a-hacker roadmap for a self-taught hacker 项目地址: https://gitcode.com/gh_mirrors/be/be-a-hacker GitHub加速计划&#xff08;be-a-hacker&#xff09;是一个面向自学黑客的…

作者头像 李华
网站建设 2026/4/18 3:58:39

如何用解构赋值快速提取数组前几个元素到独立变量

数组解构可安全提取前若干元素&#xff0c;长度不足时对应变量为undefined&#xff1b;支持跳过元素、设置默认值、获取剩余元素&#xff08;...rest须在末尾&#xff09;&#xff1b;嵌套解构需严格匹配结构&#xff0c;函数参数解构需防null/undefined报错。用 const [a, b, …

作者头像 李华