Linux系统中`/etc/security/limits.d/*.conf`优先级与Nginx加载顺序排查

千强吖_2200

千强吖_2200

2026-09-21

935人浏览

原创

/etc/security/limits.d/*.conf 按文件名 ascii 升序加载,后加载者覆盖同名用户/组的同一限制项;建议用数字前缀(如 01-nginx.conf)统一控制顺序,避免因命名导致加载顺序异常。

linux系统中`/etc/security/limits.d/*.conf`优先级与nginx加载顺序排查

在 Linux 系统中,/etc/security/limits.d/*.conf 文件的加载顺序和优先级,直接影响 Nginx 启动后实际生效的资源限制(如 nofilenproc),尤其当多个配置文件存在冲突时,容易导致 ulimit 值未按预期提升,引发 Nginx 报错“too many open files”或连接拒绝。

limits.d/ 下配置文件按字母序加载,后加载者覆盖前者

系统先读取 /etc/security/limits.conf,再按**文件名 ASCII 升序**依次加载 /etc/security/limits.d/*.conf 中所有以 .conf 结尾的文件(例如:01-nginx.conf10-default.conf99-override.conf)。同名用户/组的同一项限制(如 nginx soft nofile),后加载的配置会完全覆盖前面的值,不合并、不累加。

  • limits.d/20-app.confnginx hard nofile 65535,而 limits.d/90-nginx.confnginx hard nofile 1000000,则最终生效的是 1000000
  • 文件名含非数字前缀(如 nginx.conf)会排在 01-*.conf 之前,因其 ASCII 值更小;建议统一用数字前缀控制顺序
  • 空格、点号、连字符均参与排序:a.conf aa.conf ab.conf

Nginx 进程是否真正应用了 limits 配置?关键看启动方式

limits 设置仅对**新创建的登录会话或 PAM-aware 进程**生效。Nginx 若以 systemd 方式启动,默认不经过 PAM limits 模块,limits.d/ 配置可能被忽略。

onewo-rtlinux
onewo-rtlinux

Linux 实时编程助手。生成、审查并修改用于周期性控制任务和中断驱动程序的 C 代码。强制实施实时调度策略。

下载
  • 确认 /etc/pam.d/system-auth/etc/pam.d/common-session(取决于发行版)包含:
    session required pam_limits.so
  • systemd 服务需显式启用 PAM:检查 /usr/lib/systemd/system/nginx.service/etc/systemd/system/nginx.service 是否有:
    PAMName=loginLimitNOFILE= 直接设置(后者优先级更高)
  • 若使用 systemctl start nginx,应重载 systemd 配置:sudo systemctl daemon-reload,再重启服务

验证 Nginx 实际运行时的 ulimit 值

不能只看 ulimit -a 在当前 shell 的输出,必须查 Nginx worker 进程本身的限制。

  • 获取任一 worker 进程 PID:ps -eo pid,comm | grep 'nginx: worker'
  • 查看该进程的 limits:cat /proc/<pid>/limits | grep "Max open files"</pid>
  • 对比输出中的 Soft LimitHard Limit 是否与预期一致
  • 若仍为 1024,说明 PAM limits 未生效,或 systemd 服务定义中 LimitNOFILE 覆盖了 limits.d 配置

推荐 Nginx 专用配置实践

为避免混淆,建议将 Nginx 专属限制集中管理,并与 systemd 机制协同。

  • 新建 /etc/security/limits.d/50-nginx.conf,内容明确限定用户:
    nginx soft nofile 1048576
    nginx hard nofile 1048576
  • nginx.service 中补充:
    [Service]
    LimitNOFILE=1048576
    (此方式绕过 PAM,更可靠,且 systemd 会自动传递给所有子进程)
  • 同时确保 nginx.conf 中设置了 worker_rlimit_nofile 1048576,使 Nginx 主进程主动调用 setrlimit()

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

nginx linux linux系统

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.27

363

5

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

2927

6

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

2023.08.04

5385

6

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

541

5

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.07.09

1436

5

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

2024.08.07

3898

3

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

2026.01.13

102

12

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

2026.01.13

397

23

Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建
Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建

本指南详解Nginx在Windows、macOS及Linux系统的安装全流程。涵盖官方包解压、Homebrew一键部署、APT/YUM源配置及Docker容器化方案。无论新手或开发者,均可快速搭建运行环境,掌握跨平台核心指令,为后续配置与调优奠定坚实基础。

2026.03.16

139

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习