我的网络应用中有这种 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 首先检查精确和前缀位置块匹配,并记住最接近的匹配。
然后它像上面一样检查正则表达式匹配,并使用匹配的表达式。如果没有匹配,则使用精确 / 前缀匹配。