nginx 不支持 working_directory 指令,master 进程不生成 core dump,core 路径由内核 core_pattern 决定,需通过系统级配置(如 core_pattern、systemd limitcore、worker_rlimit_core)统一管理。

Nginx 不支持 working_directory 指令,也无法通过该指令配置 Master 进程崩溃时的 Core Dump 物理路径。
这是一个广泛存在的误解。Nginx 官方配置语法中从未定义过 working_directory 指令。你在 nginx.conf 中添加该行会导致启动失败:
nginx: [emerg] unknown directive "working_directory" in /etc/nginx/nginx.conf:5
更重要的是:
-
Master 进程本身不会生成 Core Dump ——
worker_rlimit_core仅作用于 worker 进程(fork 自 master),对 master 无效; - Core Dump 的存放路径不由 Nginx 控制,而是由 Linux 内核完全决定,关键参数是
/proc/sys/kernel/core_pattern; - 所谓“工作目录”(working directory)只是内核在
core_pattern为相对路径(如core.%p)时的 fallback 路径,且仅当进程有写权限时才生效——这不可靠、不推荐、也不适用于生产环境。
所以,你真正需要做的不是找 working_directory,而是打通系统级 Core Dump 全链路:
-
✅ 设置
core_pattern为绝对路径(推荐):echo '/var/crash/nginx-core.%e.%p.%t' | sudo tee /proc/sys/kernel/core_pattern sudo mkdir -p /var/crash && sudo chmod 1777 /var/crash
-
✅ 确保 systemd 服务允许 core 生成(对 master 和 worker 均有效): 在
/etc/systemd/system/nginx.service.d/override.conf中添加:[Service] LimitCORE=infinity
-
✅ 启用
worker_rlimit_core(仅影响 worker):# nginx.conf main 上下文(events 前) worker_rlimit_core 2G;
❌ 不要依赖“让 master cd 到某目录再启动”——master 进程极少崩溃,且其工作目录默认是
/,无法通过 Nginx 配置改变。
简言之:
没有 working_directory;
Master 不生成 core;
路径由 core_pattern 决定;
必须走系统级配置,而非 Nginx 配置。











