NGINX 在两个位置都包含 json 文件

NGINX 在两个位置都包含 json 文件

我有以下 nginx 代码,我希望 json 文件通过两个位置。有了以下代码,json 文件仅通过第二个位置传递。为了使两个位置都“启用”json,需要什么。我想确保第一个位置包含 /new URI(+ 几个其他子 URI)。

location /new/ {
proxy_http_version     1.1;
proxy_pass http://new_upstream;
}


location ~* \.(?:jpg|jpeg|json|fs)$ {
proxy_pass http://upstream;
}

答案1

正如nginx 位置文档,nginx 首先匹配完全匹配(= /path),然后匹配前缀匹配(/path),并记住最佳匹配。

然后它继续检查正则表达式匹配,如果发现则使用它。

如果想要阻止正则表达式匹配location,则需要^~在中使用说明符location

location ^~ /new/ {
    proxy_http_version        1.1;
    proxy_pass http://new_upstream;
}

location ~* \.(?:jpg|jpeg|json|fs)$ {
    proxy_pass http://upstream;
}

但是,此配置会强制所有带前缀的请求/new都由该块处理。第二个块不会为任何 JPG / JPEG / JSON / FS 扩展提供处理/new

相关内容