URL 中包含 ID 的 NGINX 动态代理位置

URL 中包含 ID 的 NGINX 动态代理位置

我的网络应用中有这种 URL -/sample/company/123/invoices/download/123

location /sample/company/ {
   root /myapp/public;
   include fastcgi_params;
   fastcgi_param SCRIPT_FILENAME $document_root/index.php;
   fastcgi_param SCRIPT_NAME /index.php;
   fastcgi_index index.php;
   fastcgi_pass my-backend:8000;
}

如果我有这种 URL,则所有具有此 URL 的页面/sample/company/都会受到影响。我只想使该规则仅适用于 URL 为 的情况/sample/company/123/invoices/download/123。请注意,123是动态的,这些是 ID。

我对 NGINX 还很陌生。

非常感谢您的帮助,提前谢谢!

答案1

您可以使用location这样的块:

location ~ ^/sample/company/[0-9]+/invoices/download/[0-9]+$ {
    root /myapp/public;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root/index.php;
    fastcgi_param SCRIPT_NAME /index.php;
    fastcgi_index index.php;
    fastcgi_pass my-backend:8000;
}

根据nginx 位置文档nginx 首先检查精确和前缀位置块匹配,并记住最接近的匹配。

然后它像上面一样检查正则表达式匹配,并使用匹配的表达式。如果没有匹配,则使用精确 / 前缀匹配。

相关内容