一、 问题出现
更改nginx配置文件后进行语法检测
sudo nginx -t
结果正确, 进行nginx重启
sudo nginx -s reload
没有报错,但发现重启后新的配置没有生效
nginx依然指向旧的路径
查看nginx服务状态
sudo service nginx status
或
sudo systemctl status nginx
发现出现如下错误
nginx.service: Failed to read PID from file /run/nginx.pid: Invalid argument
image
错误原因
经过查询后发现,这个错误是因为nginx和系统之间的竞争引起的。
nginx.pid 文件是在nginx启动时创建的文件,在关闭nginx服务后会消失。
系统在nginx创建该文件前就想要访问这个文件,导致了这个错误的产生。
二、 解决方案
- 创建nginx.service.d目录
在/etc/systemd/system/目录下创建nginx.service.d文件夹
mkdir /etc/systemd/system/nginx.service.d
- 打印数据到文件
执行下面的命令
printf "[Service]\nExecStartPost=/bin/sleep 0.1\n" > /etc/systemd/system/nginx.service.d/override.conf
- 重新加载daemon服务
systemctl daemon-reload
这将重新运行所有生成器,重新加载所有单元文件并重新创建整个systemd依赖关系树。
- 重启nginx服务
systemctl restart nginx
- 测试
重新测试之前修改过的配置文件是否生效
发现问题已解决
网友评论