nginx 1.0.0配ngx_cache_purge实现高效的反向代理

在功能上,Nginx已经具备Squid所拥有的Web缓存加速功能、清除指定URL缓存的功能。而在性能上,Nginx对多核CPU的利用,胜过Squid不少。另外,在反向代理、负载均衡、健康检查、后端服务器故障转移、Rewrite重写、易用性上,Nginx也比Squid强大得多。这使得一台Nginx可以同时作为“负载均衡服务器”与“Web缓存服务器”来使用。--by 张宴

下载2011-05-03更新的最新版1.3
wget http://labs.frickle.com/files/ngx_cache_purge-1.3.tar.gz
tar zxf ngx_cache_purge-1.3.tar.gz

切换到nginx目录
cd nginx-1.0.0
./configure --user=www --group=www --add-module=../ngx_cache_purge-1.3 --prefix=/usr/local/webserver/nginx --with-http_stub_status_module
make;make install

安装完成!

安装完后在/usr/local/webserver/nginx下多了四个目录,分别是fastcgi_temp,proxy_temp,scgi_temp和uwsgi_temp。

proxy_temp这个目录用于存储临时文件,需要看下是否www有权限写入,如果不可写,无法在这个目录生成文件的话,会导致反向代理失败。也可以在nginx的配置里设置proxy_temp_path指定存储临时文件的目录。

nginx配置文件参考:

http {
    #proxy_temp_path   /www/proxy_temp;
    #设置Web缓存区名称为cache_one,内存缓存空间大小为100MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为10GB。
    proxy_cache_path  /www/proxy_cache  levels=1:2   keys_zone=cache_one:100m inactive=1d max_size=10g;

server {
        listen       80;
        server_name  s.jb51.net;

location / {
            proxy_cache cache_one;
            proxy_cache_valid  200 304 12h;
            proxy_cache_key $uri$is_args$args;
            proxy_set_header Host  $host;
            proxy_set_header X-Forwarded-For  $remote_addr;
            proxy_pass http://www.jb51.net;
            expires      1d;
                }

location ~ /purge(/.*) {
                allow              all;
                allow               127.0.0.1;
            #    deny               all;
                proxy_cache_purge cache_one $1$is_args$args;
            }
            access_log /www/logs/s.log access;
        }
    ......
}

这样访问s.jb51.net/images/logo.gif,反向代理就会去请求http://www.jb51.net/images/logo.gif,保存在内存中,然后输出。
如果logo.gif这个文件发生了变化,则需要刷新缓存,访问s.jb51.net/purge/images/logo.gif,就会提示:Successful purge

Key : /images/logo.gif
Path: /www/proxy_cache/39aaa70038997e0e5e77beaa4392848d
如果这个文件没有被缓存过,则提示:404 Not Found

如果是已经安装过nginx了,请一定注意,使用nginx -s reload重启是无效的!一定要-s stop之后再启动,这样才会使用新版本的nginx!

我今天就没注意这点,在这上面化了N个小时!

/usr/local/webserver/nginx/sbin/nginx -V      
nginx: nginx version: nginx/1.0.0
nginx: built by gcc 4.1.2 20080704 (Red Hat 4.1.2-46)
nginx: configure arguments: --user=www --group=www --add-module=../ngx_cache_purge-1.3 --prefix=/usr/local/webserver/nginx --with-http_stub_status_module

一直以为是装成功了,但反复测试均清除失败,很郁闷!明明开启了访问日志,日志也没记录任何信息!
晚上继续测试时,在nginx_error.log里看到有如下的错误提示:
2011/05/11 21:23:40 [emerg] 20976#0: unknown directive "proxy_cache_purge" in /usr/local/webserver/nginx/conf/nginx.conf:481
才确认这个模块跟本没装上,当然不能用了。后来在一个论坛看到一个人的回复说要restart,但reload是无效的。才想到前段搞nginx升级时就发现,如果不用make upgrade升级,重新编译升级的话,必须停掉,再启动才会使用新的版本!

(0)

相关推荐

  • nginx 1.0.0配ngx_cache_purge实现高效的反向代理

    在功能上,Nginx已经具备Squid所拥有的Web缓存加速功能.清除指定URL缓存的功能.而在性能上,Nginx对多核CPU的利用,胜过Squid不少.另外,在反向代理.负载均衡.健康检查.后端服务器故障转移.Rewrite重写.易用性上,Nginx也比Squid强大得多.这使得一台Nginx可以同时作为"负载均衡服务器"与"Web缓存服务器"来使用.--by 张宴 下载2011-05-03更新的最新版1.3wget http://labs.frickle.com

  • 使用Nginx反向代理到go-fastdfs的方法示例

    背景 go-fastdfs是支持http协议的一款分布式文件系统,在一般的项目中,很少是直接将文件系统的地址暴露出来的,大多数都会通过nginx等软件进行反代过去,由于我司的业务和网络环境场景相对特殊,由公网部分(公有云)和内网部分(私有云)组成的混合云网络体系,公有云主要就是作为一个出口和入口以及运行一些审计认证等应用,对上游请求进行处理,从而减少私有云的处理次数,提升性能.那么也正是因为这样,在公网的环境下,要访问到私有云提供的服务则必须使用反向代理.同样道理,对于文件系统的访问也如此,如何

  • nginx作grpc的反向代理踩坑总结

    背景 众所周知,nginx是一款高性能的web服务器,常用于负载均衡和反向代理.所谓的反向代理是和正向代理相对应,正向代理即我们常规意义上理解的"代理":例如正常情况下在国内是无法访问google的,如果我们需要访问,就需要通过一层代理去转发.这个正向代理代理的是服务端(也就是google),而反向代理则相反,代理的是客户端(也就是用户),用户的请求到达nginx后,nginx会代理用户的请求向实际的后端服务发起请求,并将结果返回给用户. (图片来自维基百科) 正向代理和反向代理实际上

  • Nginx反向代理至go-fastdfs案例讲解

    背景 go-fastdfs是支持http协议的一款分布式文件系统,在一般的项目中,很少是直接将文件系统的地址暴露出来的,大多数都会通过nginx等软件进行反代过去,由于我司的业务和网络环境场景相对特殊,由公网部分(公有云)和内网部分(私有云)组成的混合云网络体系,公有云主要就是作为一个出口和入口以及运行一些审计认证等应用,对上游请求进行处理,从而减少私有云的处理次数,提升性能.那么也正是因为这样,在公网的环境下,要访问到私有云提供的服务则必须使用反向代理.同样道理,对于文件系统的访问也如此,如何

  • nginx proxy_pass反向代理配置中url后加不加/的区别介绍

    前言 nginx作为web服务器一个重要的功能就是反向代理.nginx反向代理的指令不需要新增额外的模块,默认自带proxy_pass指令,只需要修改配置文件就可以实现反向代理. 而在日常的web网站部署中,经常会用到nginx的proxy_pass反向代理,有一个配置需要弄清楚:配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走(这样配置可以参考这篇文章). 下面举个小实

  • 使用Nginx 反向代理来避免 ajax 跨域请求的方法

    服务器上 nginx + tomcat ,其中 nginx 监听 80 端口, tomcat 监听 8080 端口. 因为对前端不熟悉,以为用 ajax 就可以不需要 callback ,然而前端的同学说不跨域的情况下才不需要 callback ,让我在返回的 json 里加上.可是我刚刚学会了最基本的 spring-mvc 用法,根本不知道怎么加上 callback 网上到时找到一些可行的代码,差不多这个样子: @RequestMapping(method=RequestMethod.GET,

  • 解决使用了nginx获取IP地址都是127.0.0.1 的问题

    获取ip工具 import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import javax.servlet.http.HttpServletRequest; /** * IP地址 * * @date 2020年3月6日 下午12:57:02 */ @Slf4j public class IPUtils { /** * 获取IP地址 * * 使用Nginx等反向代理软件, 则不能通过reque

  • vue-element-admin开发教程(v4.0.0之前)

    目录 安装 下载 vue-element-admin,并启动 准备工作 汉化 推荐安装一些好用的扩展 ESLint dev.env.js /src/router/index.js mock 假数据页面 axios 连接后台真数据 正式环境部署 前端完整代码 参考: 说实话都是逼出来的,对于前端没干过ES6都不会的人,vue视频也就看了基础的一些但没办法,接下来做微服务架构,前端就用 vue,这块你负责....说多了都是泪,脚手架框架布了都没看过干就完事,不过好在做好了,这里写下给和我一样苦逼的同

  • vue-element-admin开发教程(v4.0.0之后)

    目录 安装&准备工作&ESLint配置 连接后台真数据 Mock 假数据 不需要 Mock 虚拟数据怎么办? 前端拦截器 登陆功能 自定义 vuex 参数 Mock 数据部分代码 由于 vue-element-admin 的架构再 4.0.0 版本后做了重构,所以写这个文章,对改动比较大的部分做个讲解,方便大家入门学习.虽说项目做了重构,但是整体结构上和之前的还是很相似的,所以有些和之前差不多的我会直接放之前文章的链接 由于 Markdown 实在不太会用,这里手动列下目录,毕竟东西有点杂

  • Web前端框架Angular4.0.0 正式版发布

    前言 angular4.0.0正式版现在可以使用了.这是自我们宣布angular改版后,首次发布的专业版本.它向下兼容,支持所有使用了angular2.x.x版本的应用程序. 我们很高兴和大家分享这个版本,它包括最近的3个月中我们做的功能上的主要改进.我们努力让开发者们能够很容易的接受angular4.0.0. 新版本的特性 •更轻量化.更快 在这个新版本上,我们履行了我们的承诺,我们做到了让Angular的程序变的更轻量化,更快.但是我们还没有完全的优化完,在接下来的日子中,你会看到我们将着重

随机推荐