在日志里发现不少状态码是200,但是内容长度为0的记录,由于nginx做了缓存,这样的话会导致后面的响请求也为空的现象。
暂且不判断是否程序问题还是请求那方的网络问题,但是现在要nginx输出响应的长度是否为0来判断是否要缓存当前的响应。
首先需要在nginx的http配置节内添加map变量:
map $upstream_http_content_length $flag_cache_empty {
default 0;
0 1;}
然后在nginx的配置文件目录下新建一个名字为disable_empty_response_cache.conf的配置文件,文件内容如下
fastcgi_no_cache $flag_cache_empty;
fastcgi_cache_bypass $flag_cache_empty;
这个文件中定义了fastcgi_no_cache和 fastcgi_cache_bypass的值为$flag_cache_empty,也就是说如果响应为空则不做缓存。
最后一步,需要在使用了nginx缓存的location中引用disable_empty_response_cache.conf文件,如下示例:
这样的话nginx就不会缓存那些空响应的了。
当然上面的不一定要写成配置文件形式
正文完