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

如何配置nginx以读取当前工作目录中的nginx.conf?,nginx,Nginx,我在Windows上嵌入了nginx,并在我的http根目录中放置了一个nginx.conf,但似乎没有包含此路径,我可以通过包含c:/http\u default/nginx.conf来包含它,但我希望nginx自动为当前工作目录包含任何nginx.conf。示例:对于http://mydomain.com/test/index.php,我希望包含c:/http\u default/test/nginx.conf。您最好的选择是首先使用标准化的目录结构(例如c:\www\example.com

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

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

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这样的正斜杠。

有一个叫做incron的程序,一个“inotify cron”系统。它检测文件更改的成本非常低:

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

  • 编辑incrontab
    incrontab-e

  • 在\u MODIFY中添加
    /var/www/site1/nginx.conf,在\u NO\u LOOP/usr/local/sbin/nginx reload.sh中调整您的webroot,将webroot设置为sitename/server并将此nginx.conf放入username目录中更安全

  • shell脚本使用
    flock
    等待上一次重新加载

    flock-x”/var/lock/nginx-reload“-c nginx-reload-worker.sh
    记录器-t“nginx重新加载[$$]”“重新加载正常”

  • 辅助脚本将每次重新加载延迟5秒

    sleep 5
    服务nginx重新加载| |错误2“nginx重新加载错误”



中查看所有这些,我不明白您为什么需要这样做。为什么不为测试创建一个行为不同的位置块呢?另一个解决方案是使用一个不同的子域(然后nginx可以使用不同的虚拟服务器来处理测试请求),我在ab big项目中工作,它与Apache一起工作。它的文件夹中有很多.htaccess,因为它是一个CMS,并且有插件,每个插件可能都有自己的.htaccess,我可以将.htaccess翻译成nginx.conf,但我需要将每个nginx放到它的文件夹中。a.htaccess不会翻译成新的nginx.conf。它转换为nginx位置块。Nginx允许您基于某些位置(它基本上插入文件的内容)包含其他配置,但不允许您拥有超过1个主配置。我不知道Nginx的windows版本(我在linux上使用它),但Nginx二进制文件上有一个“重新加载”选项。“重新加载”选项位于二进制文件中,而不是nginx.conf文件。我执行命令sudo/usr/sbin/nginx-s start来启动nginx。要重新加载配置,我要执行'sudo/usr/sbin/nginx-s reload',这在Windows上对我不起作用。我仍在试图弄清楚如何进行包含。