Reverse Proxy with caching
Igor Sysoev
is at rambler-co.ru
Thu Oct 15 18:22:16 MSD 2009
On Thu, Oct 15, 2009 at 03:17:20PM +0200, Smrchy wrote:
> Hi,
>
> i setup nginx and it's working great for us for static files. I'm wondering
> if nginx would be suited for the following scenario:
>
> We have an application server that has a lot of .php files and even more
> static files (.gif, .jpg etc).
>
> Can i put nginx in front of if like a proxy but have nginx cache the static
> files (everything except the .php stuff). So that only .php requests reach
> the server and the static files will be cached on the nginx machine once the
> get retrieved from the upstream server.
First, you may separate static files from PHP:
server {
location ~ \.(gif|jpg|png)$ {
root /data/www;
}
location ~ \.php$ {
proxy_pass http://backend;
}
However, you have to retrieve the files by yourself.
Second, you may use mirror on demand:
server {
location ~ \.(gif|jpg|png)$ {
root /data/www;
error_page 404 = @fetch;
}
location @fetch {
internal;
proxy_pass http://backend;
proxy_store on;
proxy_store_access user:rw group:rw all:r;
proxy_temp_path /data/temp;
root /data/www;
}
location ~ \.php$ {
proxy_pass http://backend;
}
And finally, you may use proxy cache:
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=STATIC:10m
inactive=24h max_size=1g;
server {
location ~ \.(gif|jpg|png)$ {
proxy_pass http://backend;
proyx_cache STATIC;
proyx_cache_valid 200 1d;
proxy_cache_use_stale error timeout invalid_header updating
http_500 http_502 http_503 http_504;
}
location ~ \.php$ {
proxy_pass http://backend;
}
--
Igor Sysoev
http://sysoev.ru/en/
More information about the nginx
mailing list