trafficserver 入坑(六)过滤POST请求

贵贵的博客 ( http://blog.linuxphp.org/ ) :

为什么过滤

最近发现ats缓存总是被莫名的清掉,查日志发现有TCP_REFRESH_MISS/200 POST的日志,然后就会回源。日志如下

1.png

大小: 5.26 K
尺寸:  x 
浏览: 26 次
点击打开新窗口浏览全图

测试流程如下

2.png

大小: 30.41 K
尺寸:  x 
浏览: 32 次
点击打开新窗口浏览全图

修改思路

先是把cache.config中的method指定为get了,post也批定不cache了,但是还是不行,于是只能从nginx下手把POST请求全转走,配置如下

        set $CacheFlag 1;
        location / {
                if ($request_method = POST) {
                        set $CacheFlag 0;
                        rewrite ^/(.*)$ /NOCACHE/$1 last;
                }
                # 转发到ats,此处略去...
                ...
        }
        location /NOCACHE/ {
                if ($CacheFlag = "1") {
                        return 403;
                }
                # 跳过ats, 直接转发到回源地址,此处略去
                ...
        }

修改后测试正常

文章来源:

Author:linuxphp@qq.com(keminar)
link:http://blog.linuxphp.org/archives/1647/