Nginx 常量错误:缓存文件太小

问题描述

我使用 Nginx 作为反向代理来缓存我的 POST 请求并编写了以下配置:

http {
    gzip on;
    gzip_proxied any;
    gzip_types text/plain application/json;
    gzip_min_length 1000;
    proxy_cache_path /var/cache/Nginx levels=1:2 keys_zone=FLOWS:100m inactive=24h max_size=2g use_temp_path=off;
    server {
        listen 3200;
        location /api/flows-page-v1 {
            proxy_pass              http://app:3000/api/flows-page-v1;
            proxy_set_header        Host $host;
            proxy_buffering         on;
            proxy_cache             FLOWS;
            proxy_cache_methods     POST;
            proxy_cache_key         "$request_uri|$request_body";
            proxy_cache_valid       200 1d;
            client_body_buffer_size 512k;
            proxy_buffers           6 128k;
            proxy_buffer_size       512k;
            proxy_busy_buffers_size 512k;
            proxy_cache_use_stale   error timeout invalid_header updating
                                    http_500 http_502 http_503 http_504;
            add_header X-Cached     $upstream_cache_status;
        }
    }
} 

尝试在缓存第一个请求后第二次发送请求时出现以下错误

[crit] 20#20: *2 cache file "/var/cache/Nginx/6/fb/bee5677b8b46add7cfef279105773fb6" is too small

登录到容器并验证此文件包含缓存内容

从源代码来看,以下片段似乎会导致此错误,因此缓存 MISS (Nginx/src/http/ngx_http_file_cache.c):

if ((size_t) n < c->header_start) {
    ngx_log_error(NGX_LOG_CRIT,r->connection->log,"cache file \"%s\" is too small",c->file.name.data);
    return NGX_DECLINED;
}

我应该怎么做才能避免这个错误

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...