Tengine中proxy_cache部分链接无法生成缓存
@shudu 你好,想跟你请教个问题:
我前段时间升级了Tengine,使用proxy_cache对主域名进行代理,但是因为链接是index.php?app=weibo&act=blog 这类的PHP链接,反向代理成功了。但是不能针对200 生成缓存(我已经去除no-cache)
fastcgi_cache 也是这样的情况,换一种程序比如WP,却可以正常生成缓存,是不是这种连接结构的问题,造成不能生成缓存呢。?
fastcgi_cache cache_php;
fastcgi_cache_valid 200 302 1h;
fastcgi_cache_min_uses 1;
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_cache_key $host$request_uri;
proxy_cache tengine_cache;
proxy_cache_valid 200 304 1h;
proxy_cache_valid 301 302 1d;
proxy_cache_valid any 1d;
proxy_cache_min_uses 1;
proxy_cache_key $host$uri$is_args$args;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(20)
我也很奇怪。为什么缓存的KEY只有index.php 后面的参数都不见。。配置我贴下面了。
好奇怪啊,能贴一下你的全部配置吗?
我换过好几个,都是这样的结果
fastcgi_cache_key $host$request_uri;
你的fastcgi_cache_key是什么样子的?
你的fastcgi_cache_key是什么样子的?
你把debug日志打开看看什么情况?
我开启了debug但是我不会看这个。我把文件发你帮看下吧。 http://pan.baidu.com/share/link?shareid=440414&uk=773327161
1、你给的配置文件不全,有些include的配置文件没有放出来
2、你的请求中,只请求了一次/,即index.php,没看到你给参数(如index.php?app=weibo&act=blog)
我尽快整理一份详细的给你
这个好像是NGINX的缓存不能缓存index.php? = 这种格式的链接,识别为一个INDEX.PHP运算了。。
你的fastcgi_cache_key是什么样子的?
我放进去试过了。可以生成缓存。但是因为链接结构是/index.php?app=home 这类的。。第一次打开/index.php?app=home生成缓存,再打开/index.php?app=weibo 这里的链接的话。全部访问的都是/index.php?app=home的缓存页面。。。。THINKSNS THINKSAAS 这类的CMS跟我的程序一样都悲剧了。
我查看过生成的缓存,KEY是这样的 KEY:www.xxx.com/index.php这里是乱码 然后是X-Powered BY :PHP,看来这种新型的结构注定悲剧。。 index.php?app=weibo&act=XX
原来有cookie啊,那应该就是这个原因了。
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
试试这个。
检查一下nginx运行的用户和组在cache目录是否有权限?
另外,调低一下tengine的错误日志看有什么提示没有。
通信是用的FastCGI,但是一样不生成缓存文件。我2个都用了。fastcgi_cache给主站用。proxy_cache用来代理二级目录作为二级域名使用。
错误日志是0kb..wp系统可以正常生成文件缓存,是不是有cookie的php就不能缓存,我今天发现的唯一可疑的地方。
Tengine和PHP之间的通信是用FastCGI吗?那应该设置的是fastcgi_cache,和proxy_cache没有任何关系。
我已发动到邮箱了。感谢你的帮助