Nginx配置基礎(chǔ)認(rèn)證

基礎(chǔ)認(rèn)證簡介:

在某些情況下,我們希望對(duì)服務(wù)器上的一些資源進(jìn)行限制,例如服務(wù)器 /fakerealm 路徑下的所有資源或域,必須先進(jìn)行身份驗(yàn)證然后才能訪問資源。

客戶端以 : 連接用戶名和密碼后,再經(jīng) Base64 編碼,通過 Authorization 請(qǐng)求頭發(fā)送該密文至服務(wù)端進(jìn)行驗(yàn)證,每次請(qǐng)求都需要重復(fù)發(fā)送該密文;

可見Basic認(rèn)證過程簡單,安全性也低,存在泄露個(gè)人賬號(hào)信息以及其他諸多安全問題,最好在實(shí)現(xiàn)了Transport Layer Security (TLS)的情況下去使用。

對(duì)于這個(gè)需求我們可以通過 HTTP Basic authentication 協(xié)議來完成,Nginx 使用 ngx_http_auth_basic_module 模塊支持 HTTP基本身份驗(yàn)證功能 。

1. 安裝

yum -y install httpd

2. 添加配置

server {

    listen 80;
    server_name  www.demo.com;
    
    #..其它配置項(xiàng)目省略
    
    location ~ ^/fakerealm {
            auth_basic "authentication"; 
            auth_basic_user_file /etc/nginx/realmdir/htpasswd;
    }
    
    #..其它配置項(xiàng)目省略
}

其中有幾個(gè)注意點(diǎn):

  1. auth_basic:隨便填,有就行,會(huì)顯示在輸入用戶名密碼的彈框中;
  2. auth_basic_user_file:告訴服務(wù)器去哪個(gè)文件中匹配訪問者輸入的用戶名和密碼;

如果是配合 HTTPS 使用,一般會(huì)將 80 端口的 HTTP 請(qǐng)求轉(zhuǎn)發(fā)到 443 的 HTTPS 請(qǐng)求中,所以上述配置應(yīng)該寫在 HTTPS 的 443 配置中:

配合HTTPS

另外,也可以全局配置基礎(chǔ)認(rèn)證,然后排除一些域。即該端口下,除被排除的域,所有的請(qǐng)求都需要輸入用戶名和密碼進(jìn)行認(rèn)證,詳細(xì)配置見官方文檔;

3. 添加賬戶

// 進(jìn)入相關(guān)文件夾
cd /etc/nginx/realmdir

// 文件名:htpasswd,用戶名:user 密碼password
htpasswd -bdc htpasswd user password

其中 htpasswd 需要和上一步中的文件名匹配,意思是在 htpasswd 這個(gè)文件中搜索賬戶是否匹配;

可以在一個(gè)文件中配置多個(gè)賬戶:

添加多個(gè)賬戶

4. 重啟Nginx

nginx -s -reload

效果:

效果

官方文檔:

https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容