nginx 从 memcached 返回损坏的数据

nginx 从 memcached 返回损坏的数据

在我的网站上,我使用 memcached 进行了数据缓存。它存储完全生成的 html 页面。下一步是通过 nginx 从 memcached 获取这些数据,并在不启动 apache 进程的情况下将其发送回用户。首先,我尝试通过 php 后端从缓存中获取数据,并且成功了。但是当我尝试使用 nginx 进行此操作时,我几乎看不到损坏的数据。类似https://i.stack.imgur.com/JFGW0.png

我正在寻求帮助解决这个问题。

附言:这里是 nginx 配置的一部分,如果它能有所帮助

location / {
    #add_header    Content-Type  "text/html";
    set $cachable 1;

    if ($request_method = POST){
        set $cachable 0;
        break;
    }
    if ($http_cookie ~ "beauty_logged") {
        set $cachable 0;
        break;
    }

    if ($cachable = 1) {
        set             $memcached_key   'nginx_$host$uri';
        memcached_pass  127.0.0.1:11211;
    }

    default_type    text/html;
    error_page      404 502 504 405 = @php;
    #proxy_pass http://front_cluster;
}

location @php {
    proxy_pass http://front_cluster;
}

答案1

Nginx 不会对 Memcached 中存储的内容进行任何处理,它只是获取并原样返回给浏览器。

真正的原因是应用程序使用的 Memcached 客户端库。大多数库都会压缩较大的值(通常是在值大小超过某个阈值时),因此您必须将其配置为不这样做,或者设置memcached_gzip_flaggunzip 模块已启用。

相关内容