2017-03-15 79 views
5

我有一种情况,我们已经在全球范围内为所有非活网站设置了auth_basic。 Nginx可否在站点特定文件中覆盖此auth_basic并将auth_basic用于具有新认证密码的站点特定路径。如何覆盖nginx中的全局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/*; 

回答

2

是的,你可以做到这一点。

从文档报价:http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html#auth_basic

语法:auth_basic串|关闭;

默认值:auth_basic off;

上下文:http,服务器,地点,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>; 
+0

不能按预期工作。全局用户凭据总是会覆盖后者。 – shrish

+0

你能分享你的配置文件吗? +你的nginx版本是什么? – ffeast

+0

此解决方案对我来说不起作用 –