我有以下nginx的配置:nginx的缓存响应与memcached的
upstream backend {
server localhost:8080;
}
upstream memcached_server {
server 127.0.0.1:11211;
}
server {
listen 3000;
server_name localhost;
location /picture {
set $memc_cmd get;
set $memc_key $arg_login;
memc_pass memcached_server;
error_page 404 = @cache_miss;
}
location @cache_miss {
proxy_pass http://backend;
}
location /image {
proxy_pass http://myimageservice;
}
当我发送请求:localhost:3000/picture?login=john
它试图用钥匙“约翰”找到memcached的内容。当内容不存在于memcached中时,代理将请求传递给后端服务器(localhost:8080),后者使用John的图像的路径设置“X-Accel-Redirect”。路径以'/ image'开头,因此nginx从myimageservice获取数据并将其返回给客户端。
问题是我想缓存从'myimageservice'返回的响应,所以下次调用localhost:3000/picture?login=john
时,没有请求被发送到后端服务器(localhost:8080),并且响应立即从memcache返回。可能吗?
经过一番研究后,我a gree认为使用lua解决方案是很好的。 我改变了主意 - 从Memcache辞职并使用基于文件系统的缓存。 – Konrad 2014-11-14 07:12:47