我有以下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