Nginx是高性能的HTTP服务器,通过Proxy Cache可以使其对静态资源进行缓存。其原理就是把静态资源按照一定的规则存在本地硬盘,并且会在内存中缓存常用的资源,从而加快静态资源的响应。
以下为nginx配置(注释部分为proxy_cache代码说明):
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
gzip on;
include /etc/nginx/conf.d/*.conf;
#设置缓存路径;设置缓存目录为2级目录,并且第1层目录为1个字符,第二层为2个字符;设置web缓存区为cache_test,内存缓存空间大小为100m;1天没被访问自动器清除;磁盘缓存空间大小为1G;
proxy_cache_path /data/proxy_cache levels=1:2 keys_zone=cache_test:100m inactive=1d max_size=1g;
proxy_temp_path /data/proxy_temp_dir; # 设置缓存临时目录
}
server {
listen 80;
server_name 111.111.111.11;
root /usr/share/nginx/html;
location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {
root /usr/share/nginx/html/;
index index.htm index.html;
proxy_cache cache_test; #启用proxy_cache 功能并自定义名称为cache_test;
proxy_cache_valid 200 301 302 502 304 206 1d; #缓存错误页面 时间为1天
proxy_cache_key $host$uri; #设置缓存的Key
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://test;
}
location /favicon.ico {
log_not_found off;
access_log off;
}
## 用于清除缓存,访问http://111.111.111.11/purge/test/timg.jpg来清除http://111.111.111.11/test/timg.jpg的页面缓存
#location ~ /purge(/.*) {
# allow 127.0.0.1;
# deny all;
# proxy_cache_purge cache_test $host$1$is_args$args;
#}
location ~ .*\.(php|jsp|cgi|jhtml)?$ {
root /usr/share/nginx/html/;
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;
proxy_pass http://test;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
upstream test{
server 111.111.111.12:80;
server 111.111.111.13:80;
server 111.111.111.14:80;
}
测试:访问111.111.111.11 (通过日志可以看见 第一次访问,前端111.111.111.11将请求转发到后端服务器111.111.111.13响应)再次刷新访问111.111.111.11 (此时后端没有日志产生,是因为上一次访问后111.111.111.11代理服务器已经生成了缓存,并保存到了/data/proxy_cache/)
总结:到此proxy_cache配置缓存web静态资源实验已经成功,比较关键的是,在满足需求的情况下,不用单独的使用缓存层(比如用squid实现),降低了运维的成本,而且在系统出现故障的时候,可以快速的定位故障点,当应用不可用时,只需要分别访问后端服务器和nginx代理服务器就可以判断问题出现在哪一层上。
您还未添加分享代码,请到主题选项中,添加百度分享代码!
您可以选择一种方式赞助本站
支付宝转账赞助
支付宝扫一扫赞助
微信钱包扫描赞助