是否可以指定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-path
https://nginx.org/en/docs/configure.html)。我们可以通过运行命令nginx -V
(大写“V”)找到 Nginx 使用的各种路径。因此,--conf-path
是主nginx.conf
文件所在的位置,那path 用于任何相对路径。
根据官方文档(https://nginx.org/r/root),root
但是指令可以包含其他变量。
感谢@cyker 在发布初始答案 5 年后做出澄清!
答案2
我还没有找到使用相对路径或定义全局变量的方法,但是这个小技巧解决了我的问题。