如何在nginx中覆盖全局auth_basic

时间:2017-03-15 17:29:18

标签: nginx basic-authentication

我的情况是,我们已在所有非实时网站的全球级别设置auth_basic。是否可以在Nginx中覆盖特定于站点的文件中的auth_basic,并使用新的身份验证密码将auth_basic应用于特定于站点的路径。

全局级别的

auth_basic设置在/etc/nginx/conf.d/auth.conf

特定于站点的配置位于/etc/nginx/sites-enabled/sitename.conf

在nginx.conf中我有:

  include /etc/nginx/conf.d/*.conf;
  include /etc/nginx/sites-enabled/*;

1 个答案:

答案 0 :(得分:2)

是的,你可以做到。

从文档引用:http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html#auth_basic

  

语法:auth_basic string |关;

     

默认值:auth_basic off;

     

上下文:http,server,location,limit_except

正如您所看到的,指令本身可以在多个级别(上下文)中定义,即如果您在全局级别具有该指令,则可以在服务器甚至位置级别禁用它。

auth_basic_user_file 指令http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html#auth_basic_user_file

也是如此

因此,您可以在全局级别定义 auth_basic / auth_basic_user_file ,并将其覆盖在每个网站上

auth.conf:

auth_basic global;                                                          
auth_basic_user_file <path_to_your_auth_file>;                  

sitename.conf:

auth_basic sitenamereal; # any name, actually you can omit it
auth_basic_user_file <path_to_your_site_specific_file>;