快速添加nginx配置

时间:2018-06-27 16:56:19

标签: nginx

我正在构建一个多租户应用程序,其中必须由同一个nginx服务器处理对多个域的请求。

为了实现这一点,脚本在注册过程之后为每个域创建nginx配置,并将它们添加到文件夹中。基本的nginx配置已设置为从此文件夹中读取配置。

如果我使用sudo service nginx restart手动重新启动nginx,则该应用程序可以正常运行。但是,我希望这种情况无需人工干预即可发生。即,我希望我的脚本刷新nginx配置,并且我不想再次输入sudo密码就可以这样做。

有人可以帮助我实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

我强烈不建议使用service ngnix restart重新加载配置,尤其是在多租户环境中。您可能会中断正在进行的请求,会话等。这可能很好,但是每个租户都必须做出决定,并且必须在适当的时候这样做。 Nginx支持命令service ngnix reload来解决此问题。重新加载允许重新加载配置而无需停机。

您至少可以通过3种方式触发命令:

  1. 定期cron作业(最容易设置,效率最低)
  2. 手动触发命令
  3. 通过文件系统监视触发

例如,如果您有一些允许租户修改配置的Web界面,并且知道手动触发命令或将消息发送到其他触发它的服务,则选项2会很好。您可以通过授予Web应用程序以root用户身份运行单个命令的能力来避免安全使用sudo。 vi sudo并添加行www-data ALL=(ALL) NOPASSWD: /usr/sbin/service nginx reload,其中www-data应该是应用程序运行所在的任何用户。然后,您可以根据适合您所使用语言的任何api来执行shell命令。

选项3是最可靠的。有所有几种监视文件系统的选项,但我建议使用incron。这是guide to install and configure incron。您可以监视对将配置存储在哪个目录中的更改,并使用service nginx reload代替本教程中的示例命令。