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


17

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

我们正在开发一个Web应用程序,并将app-nginx.conf具有应用程序特定配置的文件保存在项目目录中。我希望能够将此文件包含到main中,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/在我的情况下)而不是应用程序目录的路径。

Answers:


11

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

简短答案:不可以。

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

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

感谢@cyker在发布初始答案5年后进行了澄清!


谢谢,波西。不幸的是,这两种选择都不适合我。--prefix会影响其他Nginx服务器,并且从我个人的角度来看,与配置文件相比,管理起来要困难一些。而且nginx不允许setserver上下文外部使用指令创建自定义变量,因此我无法从我的app-nginx.conf文件中移动绝对路径。
安东·莫谢耶夫

因此,该路径可用于任何相对路径。我认为这是不正确的。这似乎nginx的将使用配置目录的选项includessl_certificate,例如,但是会使用前缀dir来选择,如root。我似乎没有拿出一个完整的清单,列出每个选项使用的清单。
Cyker

@Cyker你是对的。立即更新答案。当然,这还不完整。但是,比原始答案要好(这确实是错误的/不准确的)。
Pothi Kalimuthu

我正在阅读Nginx从初学者到Pro,其中指出:“您已经看到了位置块中root指令的用法。root指令告诉Nginx返回/image/myimage.jpg而不是完全限定的路径/ etc / nginx / html / app1 / image / myimage.jpg。” 所以恕我直言,这意味着Nginx配置支持相对路径吗?
Webwoman

在这里,问题专门针对“ root”指令,以及它是否可以支持“ conf文件的相对路径”。
Pothi Kalimuthu

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.