【问题标题】:Nginx optimizing image for reverse image proxyNginx 为反向图像代理优化图像
【发布时间】:2013-12-14 04:01:10
【问题描述】:

我已经为我的 Nginx 设置了一个图像反向代理,它可以工作。但是,我想提供图像的优化版本。

原始 URL(被代理)实际上包含没有图像扩展名的查询参数,例如 http://external.server.com/asp/service?k1=v1&k2=v2。我尝试了技巧 Cloudflare 或 pagespeed 将其视为图像,并希望其中一个可以优化图像。所以我的新代理 URL 现在是 http://mydomain.com/some/path/image.png?k1=v1&k2=v2。 (配置如下)

但是,它似乎不起作用。 CF 和 pagespeed 似乎都只优化来自服务 html 的引用静态图像,而不是使用任何 url 动态请求的那些。这是真的?我该如何设置,以便能够提供反向图像代理来使用 Nginx 提供优化的图像?谢谢一百万。

server {
    listen 8080;
    proxy_cache CACHE;
    pagespeed on;

    location /some/path/image.png {
      proxy_pass http://external.server.com/asp/service;
    }
}

【问题讨论】:

    标签: optimization nginx proxy pagespeed


    【解决方案1】:

    我无法回答 CloudFlare 的工作原理,但 mod_pagespeed 可以通过两种不同的方式优化图像:

    1. 在页面上静态重写 HTML 或 CSS 中的图像 URL。在这种情况下,URL 本身将被重写为ximage.png,qk1-v1&k2=v2.pagespeed.ic.Hash.png。并且该 URL 将得到优化。
    2. InPlaceResourceOptimization,图像被重写并从原始 URL 提供。从文档中可以看出,此功能仅适用于 Apache 版本的mod_pagespeed。我们正在努力将其移植到 Nginx 版本。

    一般来说,第一种方法比较有效,难道这些网址不是在HTML中静态找到的吗?它们是在 JS 中动态生成的吗?

    【讨论】:

    • 这些 URL 由 JS 调用以用作图像地图图块,因此看起来第二个选项更适用,但是,它适用于 Apache :(。您有任何相关移植的链接可以使用的项目?也许现在对我来说一个解决方法是生成一个跨越所有图像图块的静态 HTML,以便页面速度可以预先优化它们?或者,pagespeed 是否优化动态生成的 HTML 中的图像。(所以我可以先获取包含待优化URL的html,再获取优化后的图片?)
    • 哦,看来Nginx现在支持就地资源优化了! github.com/pagespeed/ngx_pagespeed/issues/42
    • 不知何故我能够优化空(全透明)png文件,但不能优化包含某些内容的文件。检查统计信息,它说是故意丢弃,但不确定为什么会被丢弃。
    • 我最终弄清楚发生了什么。最新的 ngx_pagespeed 已经包含 InPlaceResourceOptimization。所以我添加了“pagespeed ModPagespeedInPlaceResourceOptimization on;”现在它可以工作了!谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 2021-05-11
    相关资源
    最近更新 更多