Nginx - 自定义配置文件位置

Nginx - Custom configuration files location

我在很多域中使用 Nginx。其中一些域具有自定义配置。我将这些文件包含在 Nginx 配置的 server 块中。

例如:

server {
    ... some configurations things here...
    include /var/somewhere/custom.conf;
    etc.. etc.. 
}

Nginx的配置文件在里面:/etc/nginx

为了尝试将所有内容都放在一个地方,而不是到处都是我的自定义配置文件,我想将我的自定义配置文件放在 /etc/nginx/some_directory

我可以在 /etc/nginx 中创建一个子目录而不会对 Nginx 本身造成任何问题吗?我想创建 /etc/nginx/some_directory/ 并将我的许多自定义配置文件放入其中并包含它们。

我特地问这个问题是因为我不想破坏我的生产服务器上的某些东西。

如果 nginx 不知道某个目录,它就不会接触它。您可以通过 grep 在 nginx 的代码库中针对此类模式进行验证。

但是,弄乱外部文件夹结构可能会导致文件的权限和所有权出现问题,因此要么使用 nginx 为您准备的预定义文件夹(/etc/nginx/sites-enabled/etc/nginx/sites-available)您可以将其与符号链接一起使用,例如 nginx 本身

# ls /etc/nginx/sites-enabled
default -> /etc/nginx/sites-available/default

# ls /etc/nginx/sites-available
default

否则你会遇到 C/C++ 程序员所说的未定义行为的情况,并且不能保证现在有效的将来会有效/nginx 不会像发行版一样改变维护者可能会弄乱发行包管理器中包的文件夹结构和权限。

示例:

Nginx 可能会验证完整的 /etc/nginx 树的权限和所有者 - 如果您的 folders/files 不匹配,它可能会导致警告甚至崩溃。如果它是由包管理器安装的,则在删除包本身时可能会导致问题,例如如果包管理器试图仅删除已知的文件夹列表 + 然后删除父级,即 /etc/nginx by rmdir 或类似的。当您可以使用允许的文件夹或符号链接或您自己的文件夹时,您并不真正想进入和调试的情况,这些文件夹未绑定到您定义的应用程序或行为以外的应用程序或行为。