【问题标题】:Serve compressed content XOR range: bytes with nginx提供压缩内容异或范围:使用 nginx 的字节
【发布时间】:2015-04-24 18:40:00
【问题描述】:

我正在使用 nginx 提供静态内容。我想同时支持Range requests 和gzip 压缩。

不幸的是,这两个功能在 nginx 中是not compatible。在我的配置中添加 gzip on; 会禁用范围请求。

假设我不能对所有内容进行 gzip,下一个最佳选择是为所有缺少 Range: 标头的请求启用 gzip。这可能吗?

【问题讨论】:

    标签: nginx


    【解决方案1】:

    最简单的解决方案是在配置中的每个“gzip on”旁边添加这些行:

    if ($http_range) {
       gzip off;
    }
    

    尽管“如果”是邪恶的,但在这种情况下,替代方案会更糟。如果有的话。

    【讨论】:

    • 感谢您的解决方案。我已经发布了我的工作 nginx 配置文件here。我还需要 CORS 支持,我必须将其放在 gzip 上方的 if 语句中。
    • 这很棘手。 Chrome 中的 Last-modified 标头和范围请求之间存在不良交互,因此我也必须禁用它们。 nginx 中的“if”有非常奇怪的行为。我已经更新了上一条评论中引用的要点。
    • 启用 gzip 可以在我的服务器上运行。但是当我添加你的 if 语句来禁用它时,nginx 给了我一个错误:“这里不允许 gzip 指令”。你知道可能是什么问题吗?
    • 我发现了我的错误。仅当 if 条件位于 location 块内时才允许在 if 条件内使用 gzip 指令 - 如果它直接位于服务器块内则不允许。
    猜你喜欢
    • 2010-10-31
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多