nginx reload無效解決方法
阿新 • • 發佈:2022-03-29
一、 問題出現
更改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