LNMP下為Nginx目錄設(shè)置訪問(wèn)驗(yàn)證的用戶名密碼
有時(shí)候需要象Apache那樣為指定的目錄添加訪問(wèn)驗(yàn)證,一般在Apache下使用htpasswd來(lái)添加,而htpasswd是包含在apache2-utils里,一般LNMP一鍵安裝包或自己編譯安裝LNMP都不會(huì)安裝apache2-utils。下面VPS偵探說(shuō)一下如何為Nginx的網(wǎng)站目錄設(shè)置訪問(wèn)驗(yàn)證:
1、創(chuàng)建類htpasswd文件
執(zhí)行:wget -c soft.vpser.net/lnmp/ext/htpasswd.sh;bash htpasswd.sh
按提示輸入用戶名、密碼、及認(rèn)證文件名。腳本會(huì)自動(dòng)生成認(rèn)證文件。記錄下腳本返回的文件路徑。如:/usr/local/nginx/conf/vpser.net.auth。
2、為Nginx添加auth認(rèn)證配置
下面是以某域名下面的soft目錄為例,在域名的server段里加上如下代碼:
location ^~ /soft/
{
auth_basic "Authorized users only";
auth_basic_user_file 這里寫(xiě)前面腳本返回的文件路徑;
}
Authorized users only為提示信息,可以修改成自己想讓他提示的信息;auth_basic_user_file 后面需要填htpasswd.sh腳本返回的人家文件的路徑。按上面的提示修改好配置后,重啟nginx,訪問(wèn)http://yourdomainname/soft/ 就會(huì)提示輸入用戶名和密碼。
注意,加上認(rèn)證之后該目錄下的PHP將不會(huì)被解析,會(huì)出現(xiàn)下載提示,如果想可以解析PHP可以將上面的配置改為:
location ^~ /soft/?{
location ~ .*\.(php|php5)?$?{
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
#lnmp 1.1以上版本用include fastcgi.conf;替換include fcgi.conf
}
auth_basic "Authorized users only";
auth_basic_user_file 這里寫(xiě)前面腳本返回的文件路徑;
}
本教程適合LNMP一鍵安裝包或自己安裝的LNMP,只不過(guò)目錄和配置文件可能位置不一樣。
設(shè)置完執(zhí)行:/usr/local/nginx/sbin/nginx -t 測(cè)試配置是否有錯(cuò)誤。
再執(zhí)行:/usr/local/nginx/sbin/nginx -s reload 載入配置文件。
如有問(wèn)題歡迎在本文下方留言或到VPS論壇交流反饋。
原創(chuàng)文章,謝絕轉(zhuǎn)載!
>>轉(zhuǎn)載請(qǐng)注明出處:VPS偵探 本文鏈接地址:http://m.0794baidu.com/build/nginx-htpasswd.html











@初中生, 添加多個(gè)auth_basic_user_file
如果我要添加多個(gè)用戶呢?
@小學(xué)生, 刪除認(rèn)證文件后重新添加
如果想更改密碼要如何操作呢?
重新執(zhí)行提示文件已存在。
@loren, 這個(gè)好像不行
如果只想加密根目錄,而子目錄依然可以訪問(wèn),如何設(shè)置?
重啟過(guò)啦,我設(shè)置的目錄是網(wǎng)站根目錄,跟這個(gè)有沒(méi)有關(guān)系?
@Leo, 沒(méi)重啟nginx
我設(shè)置了用戶名密碼都成功了,也配置了 訪問(wèn)的時(shí)候沒(méi)有報(bào)錯(cuò),也沒(méi)有任何效果?