Tabela de conteúdos

Caching com Nginx

Seguem abaixo 2 arquivos de configuração para utilização de caching com Nginx.

Obs.: Como o servidor de exemplo é utilizado somente para caching (WebCache), os arquivos de cache estão armazenados em /var/www

/etc/nginx/conf.d/000-cache-directives.conf

map $remote_addr $cache_status {
        127.0.0.1 $upstream_cache_status;
        default ""; 
}
 
proxy_temp_path /var/www/tmp;
# proxy_read_timeout 300s;
 
# Diretivas GZip
gzip on; 
gzip_http_version 1.1;
gzip_vary on; 
gzip_comp_level 9;
gzip_proxied any;
gzip_types text/plain text/html text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
gzip_buffers 16 8k; 
gzip_disable "MSIE [1-6]\.(?!.*SV1)";

Modelo de VirtualHost

Arquivo /etc/nginx/conf.d/meu-site.ufrj.br-cache.conf:

proxy_cache_path /var/www/meu-site keys_zone=meu-site:10m levels=1:2 loader_threshold=300 inactive=1h use_temp_path=off;
 
server {
        listen 80; 
 
        server_name meu-site.ufrj.br;
 
        access_log  /var/log/nginx/access.meu-site.ufrj.br-cache.log;
        error_log  /var/log/nginx/error.meu-site.ufrj.br-cache.log;
 
        proxy_cache_key $scheme$proxy_host$uri$is_args$args;
        proxy_intercept_errors on; 
        proxy_cache_lock on; 
        proxy_cache_lock_timeout 5m; 
        proxy_connect_timeout 5m; 
 
        location / { 
                proxy_pass http://original.meu-site.ufrj.br;
                proxy_cache meu-site;
                add_header X-Cached $upstream_cache_status;    
                add_header X-Cache-Status $cache_status;
                proxy_cache_use_stale error timeout updating http_403 http_404 http_500 http_502 http_503 http_504;
                proxy_cache_valid 200 301 302 4h; 
                proxy_cache_valid 404 2m; 
                error_page 301 302 307 =200 $server_name;    
                expires max;
 
                # Substitui a URL para não quebrar links
                sub_filter_once off;
                sub_filter "original.meu-site.ufrj.br" $server_name;
        }