如何配置nginx来读取当前工作目录中的nginx.conf?

时间:2011-08-14 11:25:57

标签: nginx

我在Windows上安装了nginx并在我的http根目录中放了一个nginx.conf,但似乎没有包含此路径,我可以通过包含c:/http_default/nginx.conf来包含它,但我希望nginx能够自动包含包含当前工作目录的任何nginx.conf。示例:对于http://mydomain.com/test/index.php,我希望包含c:/http_default/test/nginx.conf

2 个答案:

答案 0 :(得分:2)

您最好的选择是首先使用标准化的目录结构(例如c:\ www \ example.com)。然后在每个站点目录中都有一个根目录和conf文件。然后,您将在主要的nginx.conf http {} 部分中使用它。

include c:/www/*/conf/nginx.conf;

然后,当您启动或向nginx发出重新加载时,将加载每个站点的nginx.conf。因此,如果您有一个站点的这两个路径,那么您将被设置。

c:\www\example.com\conf\
c:\www\example.com\htdocs\

Web文件进入 htdocs nginx.conf 进入conf。就这么简单。

我从未在Windows上使用过nginx,因此我假设它的'conf使用正斜杠,如* nix。

答案 1 :(得分:2)

有一个名为incron的程序,一个“inotify cron”系统。它以极低的成本检测文件更改:inotify

  • 安装incron,例如apt-get install -y incron

  • 编辑incrontab incrontab -e

  • 添加/var/www/site1/nginx.conf IN_MODIFY,IN_NO_LOOP /usr/local/sbin/nginx-reload.sh调整您的webroot,将webroot设置为sitename / server并将此nginx.conf放入用户名dir

  • 更安全
  • shell脚本使用flock等待之前的重新加载

    flock -x "/var/lock/nginx-reload" -c nginx-reload-worker.sh logger -t "nginx-reload[$$]" "Reloading OK"

  • 工作脚本将每次重新加载延迟5秒

    sleep 5 service nginx reload || error 2 "nginx reload error"


NGINX auto reload gist

中查看所有内容