周梦康 发表于 2014-05-17 3882 次浏览 标签 : Nginx

发现本机nginx的配置里server模块里root后面的相对的路径和include后面相对的路径不一样

如上图红框所示:

默认server里面配置的roothtml,然后我就把我这个项目的root地址设置为root html/ganshijiumei,实际其访问的地址是/usr/html/ganshijiumei

依次类推我将下面的包含的配置文件写成include html/ganshijiumei/nginx.conf,执行sudo nginx -t的时候则会提示:

nginx: [emerg] open() "/private/etc/nginx/html/ganshijiumei/nginx.conf" failed (2: No such file or directory) in /private/etc/nginx/vhost/ganshijiumei.conf:10 nginx: configuration file /private/etc/nginx/nginx.conf test failed

想了下,分析原因应该是,nginx启动的时候找的配置文件是/private/etc/nginx/nginx.conf,然后通过nginx.conf中包含了当前目录下面的vhost/ganshijiumei.conf,而执行include命令仍然是在/private/etc/nginx/nginx.conf,所以最后提示的是/private/etc/nginx/html/ganshijiumei/nginx.conf文件不存在。 

那么设置root的时候为何又是相对于/usr/目录呢?想必应该和我编译nginx时候的配置有关。我查看下我之前编译时候的笔记

./configure 
--prefix=/usr 
--sbin-path=/usr/sbin 
--conf-path=/private/etc/nginx/nginx.conf
...

想必是因为第一个参数,安装的路径决定的。只是猜想,不知道对不对。

评论列表