Nginx是否包含配置文件?


12

Nginx包含配置文件的顺序是固定的还是随机的?Apache 明确指出通配符以字母顺序扩展。对于Nginx,这似乎并不适用,并且手册对此一无所获

在我的设置中,20_example.com包含在之前00_default,这违背了我在此处定义共享指令(如日志格式)的目的。

Answers:



3

AD7six的答案并不完全正确。当两个服务器块具有相同的“特殊性”时,顺序也很重要,例如,当两个服务器块都使用server_name中的正则表达式,并且传入的请求与这两个匹配时:

server {
    server_name ~^(www\.)?(?<domain>foo\.com|bar\.com|baz\.com)$;
    ...
}

server {
    server_name ~^(www\.)?(?<domain>.+)$;
    ...
}

在这种情况下,这两个服务器块无法散布在两个文件上,因为这样不能保证它们的顺序。


1

正如OP指出log_format顺序,这确实非常重要,对于自定义log_formats而言,如果将两种类型的文件,某些具有log_formats的文件,某些具有服务器块的文件(使用这些log_formats)放在同一目录中,结果将是高度不可重复的配置。

在工作中,当我们首先将手工制作的nginx服务器场移到puppet中时,在进行了许多奇怪的调试之后,例如使用两个/ etc / nginx / *(- r)使用md5match和相同的二进制文件会产生不同的结果(一个无效的log_format错误,而另一个无效),我们学会了一种艰难的方法,即对于某些指令(例如log_format ),定序的确非常重要

通过仅将服务器块生成从conf.d / *中移出到conf.d / *之后的另一个文件夹中,我们解决了该问题。

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.