博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nginx proxy_cache 使用示例
阅读量:1982 次
发布时间:2019-04-27

本文共 3103 字,大约阅读时间需要 10 分钟。

原文出处:

动态网站使用缓存是很有必要的。前段时间使用了 nginx proxy_stroe 来保存静态页面,以达到缓存的目的。当然 proxy stroe 用来做缓存是不够好的方案。

缓存这一块当然还有 squid 之类的独立缓存服务器。如果使用 nginx 为 web 服务器,还要加个 squid 来缓存,是觉得多了一个 http 请求层。幸好 nginx 0.7 有了 proxy_cache 来做这个缓存的事。

之前来有个 ncache 是新浪员工开发的 nginx 模块(好像只能在 nginx 0.6 中编译无运行)。已经停止维护了,已经被加到 nginx 标准库里了。昨天还不知道 proxy_cache 就是 ncache 的功能时,还在努力匹配 ncahce,浪费了N多时间,最终没看到可以缓存。后来尝试 proxy_cache 才解决,且使用简单。

安装 Nginx 请看:,如果没有 pcre 库,可以到 下载(我用的是 8.02)。

nginx 0.7.65 默认安装就可以了。

安装好后开始匹配 proxy_cache,先准备后台服务器的文件,如是 time.jsp,内容:

  1.   
  2. <%=new java.util.Date() %>  
<%=new java.util.Date() %>

conf/nginx.conf:

  1.   
  2. user  nobody;   
  3. worker_processes  1;   
  4. error_log  logs/error.log;   
  5. pid        logs/nginx.pid;   
  6.   
  7. events {   
  8.     worker_connections  1024;   
  9.     use epoll;   
  10. }   
  11.   
  12. http {   
  13.     include       mime.types;   
  14.     default_type  application/octet-stream;   
  15.   
  16.     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '   
  17.                       '$status $body_bytes_sent "$http_referer" "$request_body" '   
  18.                       '"$http_user_agent" "$http_x_forwarded_for" "$request_time"';   
  19.   
  20.     sendfile        on;   
  21.     keepalive_timeout  60;   
  22.   
  23.     proxy_cache_path /var/cache0 levels=1:2 keys_zone=pnc:100m inactive=2h max_size=10g;   
  24.     upstream backend {   
  25.         server 192.168.1.2:8080  weight=6;   
  26.         #server 192.168.1.3:8080  weight=4;   
  27.     }   
  28.   
  29.     server {   
  30.         listen       80;   
  31.         server_name  localhost;   
  32.   
  33.         access_log  logs/access.80.log  main;   
  34.   
  35.         location / {   
  36.             proxy_cache pnc;   
  37.             proxy_temp_path /var/nginx_temp;   
  38.             #proxy_cache_key "$request_uri$request_body";   
  39.             #proxy_cache_methods GET POST;   
  40.             proxy_cache_valid 200 304 1m;   
  41.             proxy_pass http://backend;   
  42.         }   
  43.   
  44.         error_page   500 502 503 504  /50x.html;   
  45.         location = /50x.html {   
  46.             root   html;   
  47.         }   
  48.     }   
  49. }  

启动 nginx 后,打开浏览器,可以狂刷 Ctrl + F5,可以看到一样的页面。一分钟后再会一个新的页面。

是 proxy_cache_valid 200 304 1m; 告诉 nginx 后台返回的结果是 200 或 304 的响应,用 1m(分钟)的缓存。

proxy_cache_key 默认是 "$scheme$host$request_uri"。

proxy_cache_methods 默认是 GET HEAD。

当要缓存 post 请求后,要用 proxy_cache_methods POST 来打开。并且 proxy_cache_key 要对,post 的请求 query string 是在请求体内,所以加 $request_body 作为 key 的一部分。要用 post ,上面匹配去了注释就可以了。

转载地址:http://opwvf.baihongyu.com/

你可能感兴趣的文章
C++中判断数据类型的函数【转】
查看>>
const在函数前与函数后的区别【转】
查看>>
C++中的mutable关键字【转】
查看>>
c++中冒号(:)和双冒号(::)的用法【转】
查看>>
python中各种下划线的含义
查看>>
《计算机视觉-一种现代方法(第2版)》读书笔记三:早期视觉(一幅图像)
查看>>
《计算机视觉-一种现代方法(第2版)》读书笔记六:应用之图像搜索和检索
查看>>
#Deep Learning回顾#之LeNet、AlexNet、GoogLeNet、VGG、ResNet
查看>>
如何撰写高水平的学术论文
查看>>
谭浩强《C++面向对象程序设计》知识点总结
查看>>
分享一个关于介绍TextCNN和TextRNN的文章
查看>>
关于CNN中感受野的理解和计算方法
查看>>
java基础----RandomAccessFile
查看>>
__attribute__((packed))
查看>>
dom简介
查看>>
javascript学习
查看>>
Android深入浅出之Binder机制
查看>>
linux查看硬件信息
查看>>
linux支持大于4G内存
查看>>
WM_GETINFO相关
查看>>