nginx reload无效解决方法
方案1:
nginx: [error] open() "/usr/local/var/run/nginx.pid" failed (2: No such file or directory)
找到你的nginx.conf的文件夹目录
然后运行命令
nginx -c /usr/local/etc/nginx/nginx.conf
再运行
nginx -s reload
重启nginx就可以了
----------------------------------------------------------------------------------------------------------------------------
方案2:
一、 问题出现
更改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
错误原因
经过查询后发现,这个错误是因为nginx和系统之间的竞争引起的。
nginx.pid 文件是在nginx启动时创建的文件,在关闭nginx服务后会消失。
系统在nginx创建该文件前就想要访问这个文件,导致了这个错误的产生。
二、 解决方案
1.创建nginx.service.d目录
在/etc/systemd/system/目录下创建nginx.service.d文件夹
mkdir /etc/systemd/system/nginx.service.d
2.打印数据到文件
执行下面的命令
printf "[Service]\nExecStartPost=/bin/sleep 0.1\n" > /etc/systemd/system/nginx.service.d/override.conf
3.重新加载daemon服务
systemctl daemon-reload
这将重新运行所有生成器,重新加载所有单元文件并重新创建整个systemd依赖关系树。
4.重启nginx服务
systemctl restart nginx
5.测试
重新测试之前修改过的配置文件是否生效
发现问题已解决
原文地址:https://www.jianshu.com/p/64fba261005d