NGINX 配置正则表达式的位置

NGINX 配置正则表达式的位置

由于我已经使用 Apache 网络服务器 15 年多了,所以我想给这个新手一个机会。;) 我一直在尝试调整我的 NGINX 配置文件以使其简洁。

站点通常会将所有流量重写到特定的index.php,但我有两个目录privacyeula其中包含单独的index.php,因此对于这两个目录,我希望它只调用目录中的文件。

例如:

location ~ /(privacy|eula) {
  try_files $uri $uri/ =404;
}

导致我的浏览器将页面内容下载为.dms 文件。

如果我将位置分成两部分,如下所示:

location /privacy {
  try_files $uri $uri/ =404;
}

location /eula {
  try_files $uri $uri/ =404;
}

它按预期工作。

我搜索了一下,也找到了这样做的建议,但效果是一样的location ~ ^/(privacy|eula)。我是否只能忍受 NGINX 非常冗长的事实,还是我做错了什么?

谢谢

答案1

正则表达式 location按顺序评估块直到找到匹配项。

在您的情况下,您已将其放置在块location ~ /(privacy|eula)上方location ~ \.php$,因此类似的 URI/eula/index.php将不会被正确的位置处理,而是会被下载。

放置location ~ /(privacy|eula)方块location ~ \.php$区块。

这个文件了解详情。

相关内容