我有一堆共享一个公共父目录的 URL,例如
/content/a/.../...
/content/b/.../...
/content/c/.../...
我目前正在做的是为每个位置设置一个单独的位置块,但块内执行的操作是相同的。
我想知道是否只有一个位置指令更理想/content/
,例如
location ^~ /content/ {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
}
但是我该如何处理诸如/content/d/...
、/content/blah/
等无效请求?
答案1
您可以在内容位置内使用 try_file 指令,例如:
location /content {
try_files $uri $uri/ @pass =404;
}
location @pass {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
}
它将检查文件、@pass 位置,如果没有找到则返回 404;
答案2
如果已知有效资源列表且列表很小,那么正则表达式匹配怎么样?例如:
location ~ ^/content/(a|b|c|etc)/ {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
}