设为首页 收藏本站
查看: 1152|回复: 0

[经验分享] 戏说Nginx(三)

[复制链接]

尚未签到

发表于 2018-11-10 12:11:18 | 显示全部楼层 |阅读模式
  Nginx作为web缓存服务器应用
  Nginx支持类似Squid的缓存功能。Nginx的web缓存服务主要由proxy_cache相关命令集和fastcgi_cache相关命令集构成,前者用于反向代理时对后端内容源服务器进行缓存,后者主要用于对FastCGI的动态程序进行缓存。此外,如果不想使用Nginx自带的缓存功能,也可以使用第三方模块ngx_slowfs_cache来实现缓存服务器配置。
  1.在Nginx下安装缓存服务器:
  这里使用Nginx自带的缓存模块,通过proxy_cache命令来实现数据的缓存。
  下载ngx_cache_purge模块,下载地址:http://labs.frickle.com/files/ngx_cache_purge-2.1.tar.gz
  安装:
  wget http://labs.frickle.com/files/ngx_cache_purge-2.1.tar.gz
  tar zxvf ngx_cache_purge-2.1.tar.gz -C /app
  tar zxvf  nginx-1.4.7.tar.gz
  cd nginx-1.4.7
  ./configure --user=www --group=www --prefix=/usr/local/nginx/ --add-module=/app/ngx_cache_purge-2.1/ --with-http_stub_status_module --with-http_ssl_module
  make
  make install
  2.配置Nginx缓存服务器:
  配置:
  user  www www;
  worker_processes  4;
  error_log  logs/error.log  notice;
  pid        logs/nginx.pid;
  worker_rlimit_nofile 65535;
  events {
  use epoll;
  worker_connections  65535;
  }
  http {
  include       mime.types;
  default_type  application/octet-stream;
  charset utf-8;
  server_names_hash_bucket_size 128;
  client_max_body_size     300m;
  client_header_buffer_size    32k;
  large_client_header_buffers 4 32k;
  sendfile        on;
  tcp_nopush     on;
  #keepalive_timeout  0;
  keepalive_timeout  60;
  client_body_buffer_size 512k;
  proxy_connect_timeout  5;
  proxy_read_timeout 60;
  proxy_send_timeout 5;
  proxy_buffer_size  16K;
  proxy_buffers  4  64k;
  proxy_busy_buffers_size 128k;
  proxy_temp_file_write_size 128k;
  gzip  on;
  gzip_min_length 1k;
  gzip_buffers    4  16k;
  gzip_http_version  1.1;
  gzip_comp_level      2;
  gzip_types  text/plain application/x-javascript text/css application/xml;
  gzip_vary on;
  proxy_cache_path /backup/proxy_cache_dir levels=1:2 keys_zone=cache_one:1024m inactive=1d ma
  x_size=3g;
  参数说明:
  ☆ proxy_cache_path :  用于设置缓存的目录,后面跟缓存路径。最好将缓存目录放在一个独立的硬盘上。
  ★ levels=1:2  :   levels用来设置目录深度,这里是两层目录深度,第一层是一个字符,第二层是两个字符。
  ☆ keys_zone  :   用来设置web缓存区名称,这里是cache_one,后面的“4096m”表示内存缓存空间大小为4GB。
  ★ inactive  :  表示自动清除缓存文件的时间,这里的“1d"表示1天没有被访问的内容自动清除,还可以使用分钟或小时计时,例如“5m"表示5分钟后自动清除,“5h”表示5小时后自动清除。
  ☆ max_size  : 表硬盘缓存空间可使用的最大值,默认情况下经访问的文件常将被放到内存中进行缓存,而在内存缓存空间不足时,Nginx会将不经常访问的数据从内存写到磁盘。
  proxy_temp_path /backup/proxy_temp_dir;
  参数说明:
  ★ proxy_temp_path : 用于指定临时缓存文件的存储路径,这里需要注意的是,proxy_temp_path和proxy_cache_path指定的路径必须在同一磁盘分区。
  server {
  listen       80;
  server_name  yan.blog.com m.blog.com;
  charset utf-8;
  #access_log  logs/host.access.log  main;
  location / {
  proxy_cache  cache_one;
  参数说明:
  反向代理缓存设置命令,语法为“proxy_cache   zone|off",默认值为off,需要将proxy_cache命令放到location字段,这样匹配此location的url才能被缓存。
  proxy_cache_valid  200 304 12h;
  参数说明:
  对不同的HTTP状态码设置不同的缓存时间。
  proxy_cache_key $host$uri$is_args$args;
  参数说明:
  这个命令是设置以什么样的参数得到缓存的文件名,默认为“#$scheme$proxy_host$request_uri",表示以协议、主机名、请求uri(包含参数)作MD5得出缓存的文件名。这里是以域名、URI、参数组合成web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内。
  proxy_set_header Host  $host;
  proxy_set_header X-Forwarded-For  $remote_addr;
  proxy_pass http://127.0.0.1:8080;
  expires   1d;
  }
  #下面这段用于配置手动清除缓存策略,清除的方法为:如果一个URL为http://yan.blog.com/bbs/index.html,那么通过访问http://yan.blog.com/purge/bbs/index.html即可清除该URL的缓存。
  location ~ /purge(/.*) {
  #allow   127.0.0.1;
  参数说明:
  表示只允许指定的IP或IP段才可以清除URL缓存。
  #allow   17.100.0.0/24;
  #deny   all;
  proxy_cache_purge    cache_one   $host$1$is_args$args;
  }
  #设置不做缓存的内容,这里设置扩展名以.jsp、.php、.jspx结尾的动态应用程序不缓存。
  location ~ .*\.(jsp|php|jspx)?$  {
  proxy_set_header Host $host;
  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-For  $remote_addr;
  proxy_pass http://127.0.0.1:8080;
  }
  access_log off;
  }
  server {
  listen       8080;
  server_name  127.0.0.1;
  #charset koi8-r;
  #access_log  logs/host.access.log  main;
  location / {
  root   /var/www/html/;
  index  index.html index.htm;
  }
  #error_page  404              /404.html;
  # redirect server error pages to the static page /50x.html
  #
  error_page   500 502 503 504  /50x.html;
  location = /50x.html {
  root   html;
  }
  }
  }
  3.测试proxy_cache实现的缓存功能:
  启动Nginx后,查看Nginx的进程:
  [root@nginx01 ~]# ps -ef | grep nginx
  root      23641      1  0 10:37 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
  www       23749  23641  0 10:45 ?        00:00:01 nginx: worker process
  www       23750  23641  0 10:45 ?        00:00:01 nginx: worker process
  www       23751  23641  0 10:45 ?        00:00:00 nginx: worker process
  www       23752  23641  0 10:45 ?        00:00:01 nginx: worker process
  www       23753  23641  0 10:45 ?        00:00:00 nginx: cache manager process
  从输出可知,Ngin进程多了一个“cache manager”进程,这个进程就是用来管理缓存服务和文件的。
  4.如何清除指定的URL缓存:
  有时候修改网页内容,如果不想等到缓存文件过期后自动清理,还可以通过手动方式清理缓存文件,清理方式在上面介绍Nginx配置文件时已经做过说明,只需在清除缓存网页的URL地址前面增加purge即可。
  例如:
  要清除http://yan.blog.com/index.html这个页面的缓存文件,只需在浏览器重输入http://yan.blog.com/purge/index.html地址即可。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-633228-1-1.html 上篇帖子: Nginx的安装与升级 下篇帖子: nginx详解(一)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表