如何限制 NGINX 用 auth_basic_user_file 重写 'location'

How to restrict NGINX rewrite 'location' with auth_basic_user_file

我的 NGINX 服务器块中有以下位置块:

location ~ ^/admin {
  auth_basic "Restricted";
  auth_basic_user_file /etc/nginx/.htpasswd;
  if (!-e $request_filename){
      rewrite ^(.*)$ /index.php?uri=;
  }
}

但是没用。 /etc/nginx/.htpasswd 文件存在并使用 htpasswd 命令生成:

sudo htpasswd -c /etc/nginx/.htpasswd admin

我以前做过这个,但这次它就停止工作了。这次唯一的区别是这次我试图在重写块内执行 auth_basic_user_file 。

该配置将不起作用,因为重写阶段 if XYZ 将始终 运行 在访问阶段 auth_XYZ 之前,无论您如何在位置块中安排它们。

See Nginx Phase Order

除了已有的要求外,您还需要将身份验证要求添加到 php 版块。