Nginx作为Web缓存服务器应用

转载: https://blog.csdn.net/jeccisnd/article/details/77317689


从0.7.48版本开始,nginx支持类似Squid的缓存功能。nginx的Web缓存服务主要由proxy_cache相关命令集和fastcgi_cache相关命令集构成,前者用于反向代理时对后端内容源服务器进行缓存,后者主要用语对FastCGI的动态程序进行缓存。此外,也可以使用第三方模块ngx_slowfs_cache来实现缓存服务器配置。

首先是安装,安装过程基本上和安装nginx无区别,不同的是要在编译时加上ngx_cache_purge模块,它是清理nginx缓存的一个插件。

插件安装

  1. wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
  2. tar zxvf ngx_cache_purge-2.3.tar.gz -C /usr/local/app/ngx_cache_purge-2.3
编译安装nginx,安装完成后可通过nginx -V来查看已经安装的nginx版本和加载的模块信息

  1. ./configure --prefix=/usr/local/app/nginx \
  2. --add-module=/usr/local/app/ngx_cache_purge-2.3 \
  3. --with-http_stub_status_module --with-http_ssl_module
  4. make
  5. make install


扫描二维码关注公众号,回复: 2144805 查看本文章
配置缓存服务器,老样子,同样是贴出配置文件内容 


  1. #user nobody;
  2. worker_processes 1;
  3. #error_log logs/error.log;
  4. #error_log logs/error.log notice;
  5. #error_log logs/error.log info;
  6. #pid logs/nginx.pid;
  7. events {
  8. worker_connections 1024;
  9. }
  10. http {
  11. include mime.types;
  12. default_type application/octet-stream;
  13. charset utf-8;
  14. server_names_hash_bucket_size 128;
  15. client_header_buffer_size 32k;
  16. large_client_header_buffers 4 32k;
  17. sendfile on;
  18. tcp_nopush on;
  19. keepalive_timeout 65;
  20. tcp_nodelay on;
  21. client_body_buffer_size 512k;
  22. proxy_connect_timeout 5;
  23. proxy_read_timeout 60;
  24. proxy_send_timeout 5;
  25. proxy_buffer_size 16k;
  26. proxy_buffers 4 64k;
  27. proxy_busy_buffers_size 128k;
  28. proxy_temp_file_write_size 128k;
  29. gzip on;
  30. gzip_min_length 1k;
  31. gzip_buffers 4 16k;
  32. gzip_http_version 1.1;
  33. gzip_comp_level 2;
  34. gzip_types text/plain application/x-javascript text/css application/xml;
  35. gzip_vary on;
  36. proxy_cache_path /backup/proxy_cache_dir levels=1:2 keys_zone=cache_one:512m inactive=1d max_size=3g;
  37. proxy_temp_path /backup/proxy_temp_dir;
  38. server {
  39. listen 80;
  40. server_name 1.j.cn 2.j.cn;
  41. index index.html index.htm;
  42. if ($host = '2.j.cn') {
  43. rewrite ^/(.*)$ http://1.j.cn/$1 permanent;
  44. }
  45. charset utf-8;
  46. access_log logs/1.j.cn.access.log;
  47. location / {
  48. proxy_cache cache_one;
  49. proxy_cache_valid 200 304 12h;
  50. proxy_cache_key $host$uri$is_args$args;
  51. proxy_pass http://127.0.0.1:8080;
  52. proxy_set_header Host $Host;
  53. proxy_set_header X-Real-IP $remote_addr;
  54. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  55. expires 1d;
  56. }
  57. location ~ /purge(/.*) {
  58. allow 127.0.0.1;
  59. deny all;
  60. proxy_cache_purge cache_one $host$1$is_args$args;
  61. }
  62. error_page 500 502 503 504 /50x.html;
  63. location = /50x.html {
  64. root html;
  65. }
  66. }
  67. }

具体的解释,就不细写了,因为码字真的很累。。。。。。

那么,上面配置能够得到什么呢,首先,通过proxy_cache_path定义 缓存目录/backup/proxy_cache_dir和/backup/proxy_temp_dir,这个文件夹要自行创建,需在同一磁盘分区

levels设置缓存的目录深度

kets_zone设置缓存区名称和指配的内存大小

max_size设置缓存空间最大使用值

通过location ~ /purge(/.*)设置了手动清楚缓存的策略,清楚的方法为:如果一个url为

http://1.j.cn/www/index.html,那么通过访问

http://1.j.cn/purge/www/index.html即可清楚该url的缓存,

其中allow用来做访问策略,这里的配置是只允许本地清除缓存,也就是说,当大家需要查看页面更新内容时,必须在linux主机上使用curl命令进行访问即可,否则均返回403,这样避免了不相干人员拥有能够清除缓存的权限。

清除成功如下




那么还可以通过配置:

  1. location ~ .*\.(jsp|php\jspx)?$ {
  2. proxy_set_header Host $host;
  3. proxy_set_header X-Forwarded-For $remote_addr;
  4. proxy_pass http://http://127.0.0.1:8080;
  5. }

来控制不做缓存的内容,这里是以.jsp  .php  .jspx结尾的动态应用程序不缓存。

那么nginx作为缓存服务器,就介绍到这里,大家可以多次打开网址,通过查看打开速度,就可以感受到有缓存的访问速度,也可以进入到backup的缓存目录里去查看有没有内容产生来判断缓存是否成功。


猜你喜欢

转载自blog.csdn.net/freshair_x/article/details/80950626