nginx配置支持memcache,但不支持写,支持读,所以读取部分由程序设置,整个代码如下
nginx的server段配置如下:
#将静态文件放入memcache
location ~* .(gif|jpg|jpeg|png|bmp|swf|css|js)$ {
root /usr/share/nginx/html;
set $memcached_key $uri;
memcached_pass 127.0.0.1:11211;
error_page 404 = @goto404;
}
#从后端程序设置缓存
location @goto404{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/$fastcgi_script_name;
include fastcgi_params;
rewrite ^(.*)? /goto.php?q=$1 break;
}
goto.php源码如下:
define("PUBLIC_DIR", '/usr/share/nginx/html');
$file = $_GET['q'];
if( file_exists( PUBLIC_DIR . $file ) ){
$memcache = new Memcache;
$memcache->addserver("127.0.0.1", 11211);
$value = file_get_contents( PUBLIC_DIR . $file );
$memcache->set($file, $value, 0, 60000);
header("Location: {$file}");
}else{
header("Status: 404 Not Found");
}