¿Es posible tener un fastcgi_cache_path para cada sitio web/host virtual?

¿Es posible tener un fastcgi_cache_path para cada sitio web/host virtual?

Estoy usando la siguiente configuración en mi bloque http en 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;

Esto funciona para todos los sitios web alojados en este servidor nginx. Me gustaría saber si es posible almacenar los archivos de caché de cada sitio web en una carpeta específica, algo como:

  • /tmpfs/fastcgi_cache/sitio web1
  • /tmpfs/fastcgi_cache/sitio web2

Cuando declaro varios, el inicio de nginx de fastcgi_cache_path me da un error, incluso con zonas diferentes.

Atentamente.

Respuesta1

Puede definir varias rutas de caché en el httpcontexto nginx:

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;
    }
}

Mi 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

Respuesta2

Para cualquiera que haya seguidohttps://www.digitalocean.com/community/tutorials/how-to-setup-fastcgi-caching-with-nginx-on-your-vpsy tiene problemas para configurar el almacenamiento en caché para varios sitios y recibe el error nginx: [emerg] "fastcgi_cache_key" directive is duplicate.

Mi solución fue colocar el archivo fastcgi_cache_key "$scheme$request_method$host$request_uri";dentro de /etc/nginx/nginx.conf. En lugar de ponerlo en la configuración /etc/nginx/sites-enabled/vhost a la que alude el tutorial anterior.

Espero que esto ayude a alguien más que tenga un problema similar al mío.

información relacionada