nginx:在位置指令中设置自定义标头

nginx:在位置指令中设置自定义标头

我想在以下情况下设置自定义“X-Cache-Status”标头:第一个文件找到in try_files,但其他匹配项均未找到。最好的方法是什么?

server {
    location / {
        try_files /cache/${host}${cache_uri}_index.html $uri $uri/ /index.php?q=$uri&$args;
    }
}

答案1

替代答案,不带 if :

server {

    location / {
        add_header X-Cache-Status "foo";
        try_files /cache/${host}${cache_uri}_index.html @fallback;
    }

    location @fallback {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

}

答案2

我认为你别无选择,只能部分复制 try_files 功能:

server {
    location / {
        if ( -f "$document_root/cache/${host}${cache_uri}_index.html" ) {
                add_header X-Cache-Status "value";
                break;
        }
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }
}

相关内容