2017-03-15 72 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

此解決方案對我來說不起作用 –