如何在nginx的目录下使用basic auth? 并不像看起来那么容易

我有一个像这样的结构的网站:

www.example.org – 如果你得到/你得到一个WordPress的CMS www.example.org/wiki – 一个mediawiki www.example.org/project – projectpier

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

所以如果有一条规则是

location ~ \.php$ { 

另一个是

 location /wiki { 

对于.php文件来说,第一个规则是匹配的,而不pipe第二条规则中的基本authentication规则如何。 其他非.php文件受到保护。 显然,这不是我想要的。 .php的位置规则是启用php-fpm。

这与apache的.htaccess完全不同,我只是在/ wiki中放置了一个.htaccess,它工作正常。

所以…我可以在nginx中完成这个吗? 或者我需要做一些事情,如安装wiki.example.org和project.example.org DNS别名/虚拟服务器,并以这种方式进行pipe理? 看起来这么简单,似乎还有很长的一段路要走……一定有一些显而易见的事情,我错过了,而那些聪明的绘制服务器故障的人会马上指出。

提前致谢!

你可以为每个项目的php文件定义不同的位置

location ~ /wiki.*\.php$ {