在 Chef 部署的 Nginx 服务器中扩展 mime 类型

rsc*_*ieb 4 nginx configuration-files mime-types

我希望扩展 Nginx 配置中的 mime 类型。

我了解到,原则上我可以编辑 mime.types 文件,或者在http配置块中包含 mime.types 后,您可以在后面include mime.types加上 atypes = {...}来附加更多类型 la这个答案

由于我使用 Chef 设置 Nginx,因此我在启用站点的文件夹中有一个模板化配置,该配置已包含在 Nginx 配置中。我不想对 nginx 配置或 mime.types 文件进行模板化,所以我希望可以在启用站点的配置文件中获取它。

本着与上面链接的问题类似的精神,我可以将其包含在我的启用站点的文件中以获得相同的效果吗?

http {
    types {
        # here is additional types
    }
}
Run Code Online (Sandbox Code Playgroud)

我的工作理论是,如果块按照上面的链接中所述工作,添加这样的块不会覆盖httpNginx 配置中的块,而是会扩展它,就像我types直接将其添加httpnginx.conf.

这是一个有效的策略吗?或者我忽略了一些更容易的事情?

Ric*_*ith 7

尽管文档中没有明确说明,但nginxtypes 指令在继承方面的行为似乎与其他指令类似。

当且仅当当前级别没有type定义指令时,该指令才会从上一级继承。

types指令可能出现在http,serverlocation块级别。

要扩展 mime 类型(而不是重新定义它们),可以在任何包含,或上下文types的文件中添加一个块,其中包含您的添加内容。httpserverlocation

types但如果在serveror级别添加块location,还应该include mime.types在同一级别添加另一个语句,以免丢失系统默认值。

在您的站点启用文件中:

# (1)
server {
    # (2)
    location ... {
        # (3)
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您的启用站点的文件包含server { ... }块定义,您可以在位置 (1) 添加一个类型块,这将增加主nginx.conf文件已加载的 mime 类型。

但是,如果您在位置 (2) 或 (3) 中添加了类型块,则还需要添加一条include语句以再次引入系统类型:

server {
    include mime.types;
    types { ... }  
    ...
}
Run Code Online (Sandbox Code Playgroud)

types指令记录在此处