Py学习  »  NGINX

NGINX只为特定目录和索引文件指定变量

JimmyBanks • 6 年前 • 782 次点击  

我正在使用fastcgi缓存,并希望指定缓存应该在哪些url上处于活动状态。

我使用重写规则来确定要访问哪个控制器文件,并动态设置任何查询参数

我想指定激活缓存的URL,以及缓存处于非活动状态的URL,这是我的代码:

server {
    listen 80;
    server_name domain.com;
    root /home/site/wwwroot;

    set %skip_cache 1;        #this is the variable that I want to set to 0 on specific URLS

    location / {
        try_files $uri $uri/ $uri.html @php;
    }
    location @php {         
        rewrite ^(/[^/]+)$ $1.php last;
        rewrite ^(/[^/]+)/(.*)$ $1.php?q=$2 last;
    }


    location /user/ {
        set $skip_cache 0;
    }

    location /objects/ {
        set $skip_cache 0;
    }

    location ~ \.php$  {
        try_files $uri =404;
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_split_path_info ^(.+?\.php)(/.*)?$;
        fastcgi_connect_timeout         300; 
        ...etc...

    #cache parameters
    fastcgi_param FASTCGI_CACHE 1;
    fastcgi_cache cfcache;
    fastcgi_cache_valid 30s;
    fastcgi_cache_bypass $skip_cache;
    fastcgi_no_cache $skip_cache;
    add_header X-FastCGI-Cache $upstream_cache_status;  
}

如您所见,默认情况下变量$skip_cache设置为1,我想列出用于缓存的url。

我想要缓存的一个例子是 domain.com , domain.com/user/123 domain.com/objects/456

目前,如果我浏览到 /user/123 ,结果是 404 错误,因为我认为具有变量设置的位置块正在被独占使用。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52145
文章 [ 1 ]  |  最新文章 6 年前