如何动态重新加载 nginx 配置

如何动态重新加载 nginx 配置

我目前正在尝试为具有生产、测试​​和开发阶段的域设置 Nginx。每个阶段都带有自己的部分 Nginx 配置文件(带重写)。

生产和测试阶段设置为 Git 存储库的分支,并在 Git 的接收后挂钩中自动重新加载这些配置。这一切都运行良好。

我希望使用 Netbeans 的“SFTP-on-save”通过 SFTP 传输开发阶段,因为我不需要这种粒度的版本控制,而且它更直接一些。但是,这里我没有 git 的 post-receive 钩子来触发 Nginx 在上传时重新加载配置。

在 Apache 中,.htaccess 文件只会动态加载。Nginx 中是否有类似的东西?或者我该如何模拟?理想的解决方案是仅在配置文件更改时立即重新加载。

答案1

如果您不能使用 post-receive 钩子,也许您可​​以用它来inotify监视 nginx 配置中的变化。

在这种情况下,您可以使用incrondincrontab来设置对指定文件的监视,以及当这些文件发生变化时要采取的操作。如下所示incrontab

/etc/nginx/nginx.conf IN_MODIFY /etc/init.d/nginx reload

这是incrontab 的手册页。您应该能够找到inotify适合您的配置的工具集的其他文档和示例。

答案2

正如 cjc 所说,inotify并且service nginx reload是您正在寻找的命令。

查看这篇文章来自 nixCraft它对如何配置 inotify 给出了很好的解释。

相关内容