`

Nginx配置反向代理时cache缓存的使用方法

 
阅读更多
原文地址:http://www.server110.com/nginx/201310/2414.html




nginx的反代理功能一直很强大,无奈过去没有很好的cache机制,在0.7.44版里新加入的proxy cache功能后,发展至今,这个功能已经很完善和稳定,感觉有种替代传统cache如squid的趋势啊。
配置一下,很简单,配合上nginx的规则过滤真的很强大啊,简单http部分配置如下:
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
#### proxy_cache_path 指令指定缓存的路径和一些其他参数,缓存的数据存储在文件中。缓存的文件名和key为代理URL的MD5 码。levels参数指定缓存的子目录数,所有活动的key和元数据存储在共享的内存区域中,这个区域用keys_zone参数指定,keys_zone指定缓存的名字和共享内存大小,如果在inactive参数指定的时间内缓存的数据没有被请求则被删除,默认inactive为10分钟。cache manager进程控制磁盘的缓存大小,在max_size参数中定义,超过其大小后最少使用数据将被删除。
    proxy_cache_path /www/ng_cache levels=1:2 keys_zone=tmp_cache:1000m inactive=1d max_size=10000m;
    upstream backend {
        server 10.0.8.1:80
    }
    server {
        listen       80;
   server_name  localhost;
#### proxy_temp_path 必须和 proxy_cache_path 在同一分区
        proxy_temp_path /www/ng_tmp;
        location / {
            proxy_pass http://backend;
#### proxy_cache设置一个缓存区域的名称,一个相同的区域可以在不同的地方使用。在0.7.48后,缓存遵循后端的Cache-Control, Expires以及其他等。缓存依赖代理的缓冲区,如果proxy_buffers设置为off,将不会生效。
            proxy_cache tmp_cache;
#### proxy_cache_key 指定了包含在缓存中的缓存关键字(默认情况下服务器的主机名并没有包含到缓存关键字中)
            proxy_cache_key $host$uri$is_args$args;
#### 只对代码为200, 301和302的应答进行缓存10分钟
proxy_cache_valid 10m;
        }
#### purge缓存的设置
        location ~ /purge(/.*) {
           allow     127.0.0.1;
           deny               all;
#### proxy_cache_purge 设置要purge的缓存名字和cache_key(需和proxy_cache_key对应,不然会purge成404,要使用purge,需在编译nginx的时候加上第三方的cache_purge模块)
   proxy_cache_purge  tmp_cache $host$1$is_args$args;
        }
    }
}
但proxy_cache好像没办法跟squid样的在多个不同分区同时设置缓存目录和文件,不过nginx可以通过nginx的做法,我是先多设置几个proxy_cache_path指定不同分区取不同名字,然后起多个server监听不同端口缓存到不同的proxy_cache_path,再通过upstream的url_hash或者其他方式反代理过去,测试还是很好使的~~
分享到:
评论

相关推荐

    NGINX反向代理缓存[参考].pdf

    **NGINX反向代理与缓存详解** NGINX是一款高性能的HTTP和反向代理服务器,常用于负载均衡和内容缓存,以提高网站的响应速度和整体性能。在本文中,我们将深入探讨如何利用NGINX进行反向代理和缓存配置,特别是对于...

    cdn软件高级版(nginx反向代理方式实现)

    6. **缓存过期策略**:使用`proxy_cache_valid`设置不同响应状态码对应的缓存有效期,比如对于200状态码的响应,可以设置较长时间的缓存。 **三、注意事项** 1. **安全性**:使用Nginx作为反向代理时,需要注意安全...

    反向代理-Nginx

    作为一个反向代理服务器,Nginx 能够在客户端和后端应用服务器之间起到中介作用,从而实现负载均衡、缓存、安全过滤等多种功能。以下我们将深入探讨Nginx的反向代理特性和实际应用。 1. **反向代理基本原理** 反向...

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

    ### Nginx_反向代理、负载均衡、页面缓存、URL重写及读写分离详解 #### 一、前言 Nginx是一款广泛使用的高性能HTTP和反向代理Web服务器,也是常用的邮件代理服务器。它以其高稳定性、丰富的功能集、简单的配置方式...

    nginx反向代理配置及优化以及核心讲解以及高性能集群搭建

    ### 一、Nginx反向代理配置 反向代理是Nginx的核心功能之一,它充当服务器和客户端之间的中介。当用户请求到达Nginx时,Nginx会根据配置将请求转发到后端服务器处理,然后将响应返回给用户。以下是一个基本的反向...

    Nginx启用proxy_cache缓存的方法

    配置Nginx的proxy_cache功能时需要注意的是,根据后端服务器内容更新的频率和业务需求,合理地设置缓存时间策略。如果后端内容经常变动,可以适当减小inactive时间,确保用户能及时获取到更新的内容。如果后端内容...

    nginx系列(十)nginx缓存代理proxy_cacahe和CDN实现的原理

    总结来说,本文可能会涵盖Nginx的proxy_cache缓存机制,CDN的基本原理,以及如何通过配置nginx.conf文件来实现这两项功能。同时,可能会提及源码分析和优化策略,帮助读者更好地理解和利用Nginx提升网站性能。

    nginx系列(十七)nginx下的gzip与vary、预压缩、缓存、反向代理的结合

    当Nginx根据用户代理(浏览器类型)发送不同版本的响应时,会使用Vary头来告知缓存服务器和中间代理如何处理请求。例如,如果Nginx对不同的浏览器使用了不同的gzip设置,Vary头应包含`Accept-Encoding`,这样缓存...

    nginx反向代理相关文件.rar

    "nginx反向代理相关文件.rar"这个压缩包很可能包含了一些配置文件、文档或者示例,用于帮助我们理解和设置Nginx的反向代理功能。下面将详细阐述Nginx反向代理的相关知识点。 首先,了解什么是反向代理。在Web服务...

    nginx反向代理

    2. **Nginx反向代理配置** 在Nginx中,通过配置`http`、`server`和`location`等块来实现反向代理。例如,你可以创建一个`server`块监听80端口,将所有请求转发到8080端口上的后端应用服务器: ```nginx server { ...

    使用Nginx作缓存服务器以及删除其缓存文件的方法

    Nginx作为缓存服务器,可以将代理服务器转发的请求结果缓存到磁盘上,当相同的请求再次出现时,直接从缓存中加载结果,而不需要重新连接到后端服务器。这样可以显著减少响应时间,提高系统性能。Nginx缓存服务器的...

    nginx静态文件缓存的解决方案1

    这里,`proxy_cache_path` 指定了缓存存储的路径,`levels` 参数定义了缓存目录的层级,`keys_zone` 设置了一个名为 `cache_one` 的内存缓存区域,大小为 200MB,`inactive` 参数指定了1天内未被访问的缓存将被自动...

    nginx如何配置代理转发

    在IT行业中,Nginx是一款广泛应用的高性能HTTP和反向代理服务器,它的高效性和灵活性使得在配置代理转发方面具有显著优势。Nginx通过代理转发功能可以将客户端的请求转发到不同的后端服务,实现负载均衡、服务隔离、...

    Nginx 性能优化实践1

    在Nginx配置中,通过`location`指令和`proxy_pass`属性设置反向代理。例如,以下配置将所有/luban/开头的请求转发到本地8010端口: ``` location /luban/ { proxy_pass http://127.0.0.1:8010; } ``` 2. 负载均衡...

    Nginx配置srcache_nginx模块搭配Redis建立缓存系统

    在本文中,我们将探讨如何使用Nginx配置srcache_nginx模块与Redis来建立一个高效的缓存系统。首先,让我们了解这两个关键组件的作用。 Nginx是一款高性能的HTTP和反向代理服务器,它以其轻量级、稳定性和高并发处理...

    nginx缓存不起作用问题解决方法

    因此,在采用这种方法时,需要仔细权衡是否值得忽略源服务器的缓存控制指令。 总结来说,解决nginx缓存不起作用的问题,可以通过修改源服务器的响应头或直接在nginx配置中使用proxy_ignore_headers指令来控制nginx...

    nginx_cache_purge.zip

    通过这样的配置,当需要更新特定资源时,可以通过发送一个请求到`/purge`接口,Nginx Cache Purge插件会根据请求的URI清除相应的缓存项,确保用户可以立即获取到更新的内容。 总的来说,Nginx Cache Purge是Nginx...

Global site tag (gtag.js) - Google Analytics