Build Nginx RPM With ngx_cache_purge module

I’m not going have much words to say, here we go..

first download nginx source rpm from this excellent contributor/packager and install the source

$ wget http://centos.alt.ru/pub/nginx/0.9/RHEL/SRPMS/nginx-0.9.5-1.el5.src.rpm
$ rpm -Uvh  nginx-0.9.5-1.el5.src.rpm

Change to /path/rpm/SOURCE and download ngx_cache_purge

$ cd `rpm --eval '%{_sourcedir}'`
$ wget http://labs.frickle.com/files/ngx_cache_purge-1.2.tar.gz

Now we need to modified nginx.spec a bit, so it will include ngx_cache_purge module when compiled

$ cd `rpm --eval '%{_specdir}' `
$ vi nginx.spec

Add ngx_cache_source-1.2.tar.gz module to source list as Source20

Source11:       nginx_mod_h264_streaming-2.2.7.tar.gz
Source20:       ngx_cache_purge-1.2.tar.gz

In %prep section add this line %setup -T -D -a 20

%setup -T -D -a 11
%setup -T -D -a 20
%setup -T -D -a 21

In %build section add this line –add-module=%{_builddir}/nginx-%{version}/ngx_cache_purge-1.2 \

...
    --add-module=%{_builddir}/nginx-%{version}/nginx_upload_module-2.2.0 \
    --add-module=%{_builddir}/nginx-%{version}/ngx_cache_purge-1.2 \
    --add-module=%{_builddir}/nginx-%{version}/nginx_mod_h264_streaming-2.2.7
...


Add these line under make command

mv ngx_cache_purge-1.2/CHANGES ngx_cache_purge-1.2/CHANGES.ngx_cache_purge
mv ngx_cache_purge-1.2/README ngx_cache_purge-1.2/README.ngx_cache_purge

Under %files section add this line %doc ngx_cache_purge-1.2/CHANGES.ngx_cache_purge ngx_cache_purge-1.2/README.ngx_cache_purge

...
%doc nginx-upload-progress-module/CHANGES.nginx_uploadprogress_module nginx-upload-progress-module/README.nginx_uploadprogress_module
%doc ngx_cache_purge-1.2/CHANGES.ngx_cache_purge ngx_cache_purge-1.2/README.ngx_cache_purge

%{nginx_datadir}/
...

save nginx.spec, build all, install rpm binary

$ rpmbuild -ba nginx.spec
$ sudo rpm -Uvh /path/to/RPMS/nginx-0.9.5-1.....rpm

Edit nginx.conf add this location

location ~ /purge(/.*)
{
   allow            127.0.0.1;
   allow            what.ever.ip.you.want.to.allow;
   deny             all;
   proxy_cache_purge    staticfilecache  "$scheme://$host$1";
}

staticfilecache is keys_zone change this to what ever keys_zone you’ve defined in proxy_cache_path
“$scheme://$host$1” is proxy_cache_key

Reload/restart nginx

Here’s example purging from command line

$ lynx -dump -source http://www.kutukupret.com/purge/2011/03/14/build-nginx-rpm-with-ngx_cache_purge-module/
<html>
<head><title>Successful purge</title></head>
<body bgcolor="white">
<center><h1>Successful purge</h1>
<br>Key : www.kutukupret.com/2011/03/14/build-nginx-rpm-with-ngx_cache_purge-module/
<br>Path: /var/lib/nginx/7/cc/772cdb140a788c0cf099c53a21160cc7
</center>
<hr><center>nginx/0.9.5</center>
</body>
</html>

done

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *