如何在 nginx 中的目录上使用基本身份验证?并不像看起来那么简单

如何在 nginx 中的目录上使用基本身份验证?并不像看起来那么简单

我有一个网站,其结构如下:

www.example.org - 如果你访问/你将获得一个 wordpress CMS www.example.org/wiki - 一个 mediawiki www.example.org/project - projectpier

我希望 www.example.org/wiki 和 www.example.org/project 需要基本身份验证。我知道如何使用基本身份验证,但问题是 nginx 将匹配最具体的规则。

所以如果一条规则是

location ~ \.php$ {

另一个是

location /wiki {

实际情况是,对于 .php 文件,第一条规则匹配,并且无论第二条规则中的基本身份验证规则如何,它们都会显示出来。其他非 .php 文件受到保护。显然,这不是我想要的。.php 的位置规则是启用 php-fpm。

这与 apache 的 .htaccess 有很大不同,我只需将 .htaccess 放入 /wiki 中,它就能正常工作。

那么...我可以在 nginx 中完成此操作吗?还是我需要执行类似设置 wiki.example.org 和 project.example.org DNS 别名/虚拟服务器的操作并以此方式进行管理?对于看似如此简单的事情,这似乎有些绕弯子...我一定遗漏了一些明显简单的东西,那些聪明绝顶的 serverfault 人员会立即指出来。

提前致谢!

答案1

您可以为每个项目的 php 文件定义单独的位置,如下所示

location ~ /wiki.*\.php$ {

相关内容