如何从 nginx 正确提供渐进式 jpeg?

如何从 nginx 正确提供渐进式 jpeg?

我有一个渐进式 jpeg,我正尝试将其用于我的测试网站 (localhost)。但它似乎没有显示从低分辨率到高分辨率的图像。即使带宽受到限制,图像也会弹出。从我进行的测试来看,问题似乎出在我的 nginx 服务器上,不确定是配置问题还是服务器本身问题。

但我似乎不相信我的推断是正确的,服务器应该受到指责。

以下是我做过的测试,结果为阴性

  • 使用 php-gd 或 imagick 启用隔行扫描对图像进行编码
  • Firefox 与 Chrome
  • 使用已知的渐进式图像http://www.reasoft.com/tutorials/web/img/progress.jpg(通过我的 Chrome 浏览器可以在该服务器上运行,但通过我的服务器则不行)
  • 将 nginx 1.14 更改为 1.16.1
  • 通过 devtool 清除缓存
  • 启用 image_filter_interlace;

这是我的 nginx 配置文件:

worker_processes 32;
worker_rlimit_nofile 524288;
events
{
    use epoll;
    worker_connections  100000;
    multi_accept on;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    open_file_cache max=100000;
    keepalive_requests 100000;
    keepalive_timeout 30;
    index index.php;
    server {
        listen 127.0.0.1:443 ssl http2;
        server_name    static.example.com;
        root "/static/root";
        ssl_certificate "/static/server/cert.cer";
        ssl_certificate_key "/static/server/key.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 5m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        fastcgi_hide_header Set-Cookie;
        location ~* \.(?:png|jpeg|jpg)$ {
            expires 30d;
            add_header Pragma public;
            add_header Cache-Control "public";
            add_header Accept-Ranges bytes;
        }
    }
}

系统:CentOS 8.1 PHP 7

我是否遗漏了什么?

编辑:

我更新了配置以包含图像过滤模块,但结果仍然负面:

worker_processes 32;
worker_rlimit_nofile 524288;
load_module /location/of/ngx_http_image_filter_module.so;
...
http {
    ...
    server {
        ...
        location ~* \.(?:png|jpeg|jpg)$ {
            image_filter resize 1000 1000;
            image_filter_interlace on;
            ...
        }
    }
}

相关内容