Nginx:相对于 conf 文件的根路径

Nginx:相对于 conf 文件的根路径

是否可以指定root相对于包含的 conf 文件的路径?

我们正在开发一个 Web 应用程序,并将app-nginx.conf具有应用程序特定配置的文件保存在项目目录中。我希望能够将此文件包含到主目录中,nginx.conf并让root路径正确引用所需项目的子目录。示例:

# /etc/nginx/nginx.conf
http {
    include /absolute/path/to/app/app-nginx.conf
}


# /absolute/path/to/app/app-nginx.conf
server {
    server_name localhost;
    listen 9090;

    root ./app;
}

在使用类似配置启动 nginx 后,nginx 会尝试解析./app相对于 nginx 安装目录的路径(/usr/local/Cellar/nginx/1.4.3/在我的情况下),而不是应用程序的目录。

答案1

是否可以指定相对于包含的 conf 文件的根路径?

简短回答:不。

详细回答:默认情况下,Nginx 仅知道在编译时设置的路径(参考--prefix--conf-pathhttps://nginx.org/en/docs/configure.html)。我们可以通过运行命令nginx -V(大写“V”)找到 Nginx 使用的各种路径。因此,--conf-path是主nginx.conf文件所在的位置,path 用于任何相对路径。

根据官方文档(https://nginx.org/r/root),root但是指令可以包含其他变量。

感谢@cyker 在发布初始答案 5 年后做出澄清!

答案2

我还没有找到使用相对路径或定义全局变量的方法,但是这个小技巧解决了我的问题。

相关内容