nginx -t 报错 open() "/var/run/nginx.pid" failed (13: Permission denied) 怎么处理
遇到权限拒绝错误时,需要修改 nginx 配置中的 pid 文件路径或调整目录权限。通常是因为当前用户没有权限写入默认的 /var/run/ 目录,或者 user 指令指定的运行用户与启动用户不一致。将 pid 指令指向一个当前用户有写权限的目录(如 /tmp 或项目目录),即可解决该问题。

如何确认并修改 pid 指令的具体位置
通过查看配置文件确定当前的 pid 设置,并将其更改为可写路径。默认情况下,Nginx 可能尝试写入 /run/nginx.pid 或 /var/run/nginx.pid。如果这些路径受系统保护,可以将其改为 /tmp/nginx.pid。修改后再次运行检查命令验证是否成功。

worker_processes 1;
pid /tmp/nginx.pid;
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
}预期结果:
- 执行 nginx -t 输出 nginx: configuration file /etc/nginx/nginx.conf test is successful
- 无权限错误提示
- PID 文件将生成在 /tmp/nginx.pid
基于 /tmp/nginx.pid 路径下的具体权限问题分析
当 PID 路径设置为 /tmp/nginx.pid 时,需确保 Nginx 工作进程的用户对该文件有读写权限。若使用 user www-data; 但以 root 身份启动,可能导致文件所有者变更异常。建议保持启动用户与工作用户一致,或在启动前手动创建该文件并赋予相应权限。此外,/tmp 目录可能被清理策略影响,生产环境建议使用专用目录如 /var/lib/nginx 并设置正确权限。


















