【问题标题】:extending mime types in a Chef deployed Nginx server在 Chef 部署的 Nginx 服务器中扩展 mime 类型
【发布时间】:2016-09-16 11:41:04
【问题描述】:

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

我了解到,原则上,我可以编辑 mime.types 文件,或者在配置的 http 块中包含 mime.types 之后,您可以在 include mime.types 后面加上 types = {...} 来追加更多类型是 this answer

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

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

http {
    types {
        # here is additional types
    }
}

我的工作理论是,如果块按照上面链接中的描述工作,添加这样的块不会覆盖 Nginx 配置中的 http 块,但会扩展它,就好像我直接将 types 添加到nginx.conf 中的 http 块。

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

【问题讨论】:

    标签: nginx mime-types configuration-files


    【解决方案1】:

    尽管文档中没有明确说明,nginx types 指令在继承方面似乎与其他指令类似。

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

    types 指令可能出现在 httpserverlocation 块级别中。

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

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

    在您启用网站的文件中:

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

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

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

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

    types 指令是documented here

    【讨论】:

    • 在 Ubuntu 20.04 设置上使用我的 nginx 1.18.0,将 types 放入 location 始终会使系统默认值无效,无论是否指定了 include mime.types。但是将自定义types 放入server 确实成功地结合了mime.types 和我的附加types
    猜你喜欢
    • 2010-10-03
    • 2016-10-26
    • 2019-01-03
    • 1970-01-01
    • 2016-12-01
    • 2011-05-14
    • 1970-01-01
    • 2016-06-15
    • 2017-10-23
    相关资源
    最近更新 更多