É possível ter um fastcgi_cache_path para cada site / host virtual?

5

Estou usando a seguinte configuração no meu bloco http no nginx.conf:

fastcgi_cache_path /var/www/nginx_cache levels=1:2 keys_zone=NGINXCACHE:500m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;

Isso funciona para todos os sites hospedados neste servidor nginx. Gostaria de saber se é possível ter cada arquivo de cache do site armazenado em uma pasta específica, algo como:

  • / tmpfs / fastcgi_cache / website1
  • / tmpfs / fastcgi_cache / website2

Quando eu daclare o início do nginx de vários fastcgi_cache_path me causa um erro, mesmo com diferentes zonas.

Atenciosamente.

    
por ddutra 16.09.2013 / 02:15

2 respostas

11

Você pode definir vários caminhos de cache no contexto nginx http :

fastcgi_cache_path /var/run/nginx/cache/site1 levels=1:2 keys_zone=SITE1:100m inactive=1w;
fastcgi_cache_path /var/run/nginx/cache/site2 levels= keys_zone=SITE2:123m inactive=60m;
# other fastcgi_cache_* settings here or in your servers/locations

server {
    server_name site1.com;
    # blablabla

    location ~ \.bla$ {
        # blablabla
        fastcgi_cache SITE1;
    }
}

server {
    server_name site2.com;
    # blablabla

    location ~ \.bla$ {
        # blablabla
        fastcgi_cache SITE2;
    }
}

Meu nginx:

nginx -V
nginx version: nginx/1.1.19
TLS SNI support enabled
configure arguments:
--prefix=/etc/nginx
--conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log
--http-client-body-temp-path=/var/lib/nginx/body
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi
--http-log-path=/var/log/nginx/access.log
--http-proxy-temp-path=/var/lib/nginx/proxy
--http-scgi-temp-path=/var/lib/nginx/scgi
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi
--lock-path=/var/lock/nginx.lock
--pid-path=/var/run/nginx.pid
--with-debug
--with-http_addition_module
--with-http_dav_module
--with-http_geoip_module
--with-http_gzip_static_module
--with-http_image_filter_module
--with-http_realip_module
--with-http_stub_status_module
--with-http_ssl_module
--with-http_sub_module
--with-http_xslt_module
--with-ipv6
--with-sha1=/usr/include/openssl
--with-md5=/usr/include/openssl
--with-mail
--with-mail_ssl_module
--add-module=/build/buildd/nginx-1.1.19/debian/modules/nginx-auth-pam
--add-module=/build/buildd/nginx-1.1.19/debian/modules/nginx-echo
--add-module=/build/buildd/nginx-1.1.19/debian/modules/nginx-upstream-fair
--add-module=/build/buildd/nginx-1.1.19/debian/modules/nginx-dav-ext-module
    
por 09.11.2013 / 16:58
3

Para qualquer pessoa que tenha seguido link e está tendo problemas ao configurar o armazenamento em cache para vários sites e está recebendo o erro nginx: [emerg] "fastcgi_cache_key" directive is duplicate .

Minha solução foi colocar o fastcgi_cache_key "$scheme$request_method$host$request_uri"; no /etc/nginx/nginx.conf. Ao contrário de colocá-lo em / etc / nginx / sites-enabled / config vhost que o tutorial acima faz alusão.

Espero que isso ajude alguém que tenha um problema parecido comigo.

    
por 08.08.2016 / 23:10