Answers:
根据nginx源代码,它使用带有GLOB_NOSORT参数的glob()函数,因此无法明确确定文件包含的顺序。
这是在2012年11月更改的,最早于1.3.10发布。从更改文件:
现在,如果在Unix系统上使用带掩码的“ include”指令,则包含文件按字母顺序排序。
正如OP指出log_format顺序,这确实非常重要,对于自定义log_formats而言,如果将两种类型的文件,某些具有log_formats的文件,某些具有服务器块的文件(使用这些log_formats)放在同一目录中,结果将是高度不可重复的配置。
在工作中,当我们首先将手工制作的nginx服务器场移到puppet中时,在进行了许多奇怪的调试之后,例如使用两个/ etc / nginx / *(- r)使用md5match和相同的二进制文件会产生不同的结果(一个无效的log_format错误,而另一个无效),我们学会了一种艰难的方法,即对于某些指令(例如log_format ),定序的确非常重要。
通过仅将服务器块生成从conf.d / *中移出到conf.d / *之后的另一个文件夹中,我们解决了该问题。