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

时间:2016-05-19 14:10:12

标签: nginx mime-types configuration-files

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

我已经了解到,我原则上可以编辑mime.types文件,或者在配置的http块中包含mime.types后可以跟随include mime.types types = {...}添加更多类型la this answer

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

与上述链接问题类似,我是否可以在启用网站的文件中包含此内容以获得相同的效果?

http {
    types {
        # here is additional types
    }
}

我的工作理论是,如果块的工作方式如上面的链接所述,添加这样的块不会覆盖Nginx配置中的http块,但会扩展它,就好像我添加了{{1直接转到types中的http块。

这是一个有效的策略吗?还是我更容易忽视一些事情?

1 个答案:

答案 0 :(得分:1)

虽然文档中没有明确说明,但nginx types指令在继承方面的行为似乎与其他指令类似。

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

types指令可能会显示在httpserverlocation块级别中。

要扩展mime类型(而不是重新定义它们),可以在包含typeshttpserver上下文的任何文件中添加location块添加内容

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

在启用网站的文件中:

# (1)
server {
    # (2)
    location ... {
        # (3)
    }
}

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

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

server {
    include mime.types;
    types { ... }  
    ...
}

types指令为documented here