`
lzj0470
  • 浏览: 1274071 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Nginx proxy_cache 使用示例

阅读更多
原文出处:http://blog.chenlb.com/2010/04/nginx-proxy-cache.html

动态网站使用缓存是很有必要的。前段时间使用了 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 请看:安装 Nginx 配置负载均衡,如果没有 pcre 库,可以到http://sourceforge.net/projects/pcre/files/ 下载(我用的是 8.02)。

nginx 0.7.65 默认安装就可以了。

安装好后开始匹配 proxy_cache,先准备后台服务器的文件,如是 time.jsp,内容:
<%=new java.util.Date() %>


conf/nginx.conf:
user  nobody;   
worker_processes  1;   
error_log  logs/error.log;   
pid        logs/nginx.pid;   
  
events {   
    worker_connections  1024;   
    use epoll;   
}   
  
http {   
    include       mime.types;   
    default_type  application/octet-stream;   
  
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '   
                      '$status $body_bytes_sent "$http_referer" "$request_body" '   
                      '"$http_user_agent" "$http_x_forwarded_for" "$request_time"';   
  
    sendfile        on;   
    keepalive_timeout  60;   
  
    proxy_cache_path /var/cache0 levels=1:2 keys_zone=pnc:100m inactive=2h max_size=10g;   
    upstream backend {   
        server 192.168.1.2:8080  weight=6;   
        #server 192.168.1.3:8080  weight=4;   
    }   
  
    server {   
        listen       80;   
        server_name  localhost;   
  
        access_log  logs/access.80.log  main;   
  
        location / {   
            proxy_cache pnc;   
            proxy_temp_path /var/nginx_temp;   
            #proxy_cache_key "$request_uri$request_body";   
            #proxy_cache_methods GET POST;   
            proxy_cache_valid 200 304 1m;   
            proxy_pass http://backend;   
        }   
  
        error_page   500 502 503 504  /50x.html;   
        location = /50x.html {   
            root   html;   
        }   
    }   
}  
启动 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://wiki.nginx.org/NginxHttpProxyModule,
中文版:http://wiki.nginx.org/NginxChsHttpProxyModule

分享到:
评论

相关推荐

    nginx_cache_purge.zip

    《Nginx Cache Purge:高效管理Web缓存的利器》 在当今互联网环境中,Web服务器的性能优化至关重要,而缓存技术则是其中的关键一环。Nginx,以其高性能、稳定性以及模块化的特性,成为了许多网站首选的反向代理和...

    nginx缓存清除插件ngx_cache_purge.zip

    ngx_cache_purge 是 nginx 模块,此模块可以清理 nginx 的 FastCGI、proxy、 SCGI 和 uWSGI 的缓存。配置指令(相同位置语法)fastcgi_cache_purgesyntax: fastcgi_...示例:nginx扩展模型ngx_cache_purge缓存清理插件

    ngx_cache_purge-2.1.tar.gz

    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m; server { ... location /purge { allow 192.168.0.0/24; # 只允许特定IP段进行缓存清理 deny all; proxy_cache_purge...

    nginx-1.0.12_ngx-cache-purge1.5.tar.gz

    以下是一个简单的示例配置,展示了如何使用 ngx_cache_purge 模块: ```nginx http { ... proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m; server { ... location /purge...

    NGINX 缓存使用指南1

    启用Nginx的缓存功能,需要配置 `proxy_cache_path` 和 `proxy_cache`。以下是一个简单的配置示例: ```nginx proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m; ...

    ngx_cache_purge-1.3.tar.gz

    7. **版本兼容性**:ngx_cache_purge-1.3 版本可能只适用于特定版本的Nginx,因此在使用前需要检查其与你的Nginx版本的兼容性。 通过集成ngx_cache_purge插件,你可以有效地管理和优化Nginx的缓存策略,确保用户...

    nginx的各项详细配置-超多注释

    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m; server { location /static/ { proxy_cache my_cache; proxy_cache_bypass $http_pragma; proxy_cache_revalidate on;...

    Nginx服务器上搭建图片缓存服务的基本配置解析

    在编译安装Nginx时,需要添加ngx_cache_purge模块,然后在配置中使用`proxy_cache_purge`指令来清除指定的缓存。 总结来说,Nginx的proxy_store和proxy_cache模块提供了灵活的图片缓存策略,可以根据实际需求选择...

    nginx负载均衡配置文件demo

    以上只是一些基本的Nginx负载均衡配置示例,实际使用中可能还需要结合其他高级特性,如URL重写、SSL/TLS终止、限速、限制访问等,来构建更复杂的Web服务架构。对于"conf"文件中的具体配置,可以根据需求进行详细解读...

    nginx开发指南

    proxy_cache_path /var/cache/nginx/proxy levels=1:2 keys_zone=PROXY:10m max_size=10g inactive=60m; server { location /images/ { proxy_pass http://upstream_server; proxy_cache PROXY; proxy_cache_...

    nginx配置优化+负载均衡+动静分离详解.zip_nginx_nginx 负载_优化_优化配置_负载均衡

    3. **缓存(proxy_cache)**:Nginx可以作为缓存服务器,对静态资源进行缓存,减少对后端服务器的请求。 通过深入理解和实践这些Nginx的配置优化、负载均衡和动静分离技术,你可以构建一个高效、稳定且可扩展的Web...

    Nginx配置负载均衡和缓存详解

    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m; server { listen 80; server_name example.com; location ~* \.(jpg|jpeg|png|gif|css|js)$ { proxy_cache my_cache;...

    memcached+nginx使用文档

    3. **缓存控制**:可以使用`proxy_cache_bypass`、`proxy_no_cache`等指令决定是否跳过缓存,以及何时更新缓存。 4. **缓存刷新**:对于动态内容,有时需要手动清除特定缓存。Nginx提供`proxy_cache_revalidate`...

    nginx配置文件-magent

    使用Nginx的proxy_cache模块可以缓存动态内容,减轻后端服务器压力。配置示例: ```nginx location ~ \.php$ { proxy_cache my_cache; proxy_pass http://127.0.0.1:9000; ... } upstream backend { server...

    nginx集群和动静分离初步配置

    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m; proxy_temp_path /var/tmp/nginx; server { listen 80; location / { proxy_pass http://backend; proxy_cache my_...

    全面了解 Nginx 到底能做什么

    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m; server { listen 8080; server_name localhost; location / { proxy_pass http://example.com; proxy_set_header ...

    nginx场景配置与常见错误解析

    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m; server { location / { proxy_pass http://example.com; proxy_set_header Host $host; proxy_set_header X-Real-IP $...

    Nginx服务器作反向代理时的缓存配置要点解析

    proxy_cache_path /data/nginx/cache/one levels=1:2 keys_zone=one:10m max_size=10g; proxy_cache_key $host$request_uri; server { server_name www.jb51.net jb51.net; root /home/www.jb51.net/web; index ...

    Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m; proxy_cache_key "$scheme$request_method$host$request_uri"; proxy_cache_valid 200 60m; proxy_cache_valid 404 1m; ...

    Nginx+RTMP集群解决方案

    - 使用`git clone https://github.com/arut/nginx-rtmp-module.git`克隆RTMP模块源码。 - 将RTMP模块编译并添加到Nginx中,命令如下: ``` --add-module=/path/to/nginx-rtmp-module ``` - 如果需要支持H.264...

Global site tag (gtag.js) - Google Analytics