如何在 nginx 配置中组织位置指令

如何在 nginx 配置中组织位置指令

我有一堆共享一个公共父目录的 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;
}

相关内容