Nginx反向代理到后端php集群,并且用proxy_cache缓存静态资源

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代理服务器就可以判断问题出现在哪一层上。

您还未添加分享代码,请到主题选项中,添加百度分享代码!

您可以选择一种方式赞助本站

支付宝转账赞助

支付宝扫一扫赞助

微信钱包扫描赞助

┊. 恋小布 。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

图片 表情