利用nginx的反向代理模块,其中有proxy_store的开关,表示是否将反向代理得到的内容保存到本地。
用自己的BLOG做了实验,对于来访请求,如果是ASP文件的请求,直接proxy到后端(动态内容而且可能有cookie判断),其他内容,本地目录下有的就直接发给客户端IE,如果本地没有,再proxy到后端服务器。
由于ZBLOG对于每篇日志都是产生静态HTML的,因此对于后端服务器的压力就只有ASP文件的调用了,静态内容只第一次到后端读取,此后全部请求前端本地取得。
具体配置如下:
location ~* .asp {
root /web/htdocs1;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 50m;
client_body_buffer_size 256k;
proxy_connect_timeout 30;
proxy_send_timeout 30;
proxy_read_timeout 60;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_max_temp_file_size 128m;
proxy_store off;
proxy_pass http://test;
}
location / {
root /web/htdocs1;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 50m;
client_body_buffer_size 256k;
proxy_connect_timeout 30;
proxy_send_timeout 30;
proxy_read_timeout 60;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_max_temp_file_size 128m;
proxy_store on;
proxy_store_access user:rw group:rw all:r;
proxy_temp_path /web/temp;
if (!-f $request_filename) {
proxy_pass http://test;
}
}