如何在nginx中覆盖全局auth_basic

我有一种情况,我们已经为所有非现场网站设置了全局级别的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/*;

最佳答案 是的,你可以做到.

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

Syntax: auth_basic string | off;

Default: auth_basic off;

Context: 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>;
点赞