nginx 命名位置和过期标头

nginx 命名位置和过期标头

我的 nginx 反向代理配置有两个具有不同expires设置的位置:

location ~ ^/(admin|login|search) {
    uwsgi_pass      myproject;
    include         uwsgi_params;
    expires -1;
    uwsgi_cache off;
}

location / {
    uwsgi_pass      myproject;
    include         uwsgi_params;
    expires 7d;
}

Cache-Control和标头Expires按预期设置。当我尝试使用这样的命名位置来简化此设置时 –

location @uwsgi {
    uwsgi_pass      myproject;
    include         uwsgi_params;
}

location ~ ^/(admin|login|search) {
    expires -1;
    uwsgi_cache off;
    try_files $uri @uwsgi;
}

location / {
    expires 7d;
    try_files $uri @uwsgi;
}

– 任何响应均未添加标头。我认为这与 的重定向性质有关try_files。有没有办法实现我原始配置的效果,如上所述,使用命名位置?

答案1

include uwsgi_params无需让事情变得过于复杂。您可以通过移至服务器块来缩短第一个配置的一行:

include         uwsgi_params;

location ~ ^/(admin|login|search) {
    uwsgi_pass myproject;
    expires -1;
    uwsgi_cache off;
}

location / {
    uwsgi_pass myproject;
    expires 7d;
}

但请记住,如果您想uwsgi_param在某些location包含的指令中使用指令,则将被跳过,您必须像这样明确地包含它们:

...
location /custom/ {
    uwsgi_pass myproject;
    uwsgi_param my-custom-param 42;
    include uwsgi_params;
}

因此,最后,也许include uwsgi_params在所有locations 中始终使用会更容易。

相关内容