LNMP下為Nginx目錄設置訪問驗證的用戶名密碼
有時候需要象Apache那樣為指定的目錄添加訪問驗證,一般在Apache下使用htpasswd來添加,而htpasswd是包含在apache2-utils里,一般LNMP一鍵安裝包或自己編譯安裝LNMP都不會安裝apache2-utils。下面VPS偵探說一下如何為Nginx的網站目錄設置訪問驗證:
1、創建類htpasswd文件
執行:wget -c soft.vpser.net/lnmp/ext/htpasswd.sh;bash htpasswd.sh
按提示輸入用戶名、密碼、及認證文件名。腳本會自動生成認證文件。記錄下腳本返回的文件路徑。如:/usr/local/nginx/conf/vpser.net.auth。
2、為Nginx添加auth認證配置
下面是以某域名下面的soft目錄為例,在域名的server段里加上如下代碼:
location ^~ /soft/
{
auth_basic "Authorized users only";
auth_basic_user_file 這里寫前面腳本返回的文件路徑;
}
Authorized users only為提示信息,可以修改成自己想讓他提示的信息;auth_basic_user_file 后面需要填htpasswd.sh腳本返回的人家文件的路徑。按上面的提示修改好配置后,重啟nginx,訪問http://yourdomainname/soft/ 就會提示輸入用戶名和密碼。
注意,加上認證之后該目錄下的PHP將不會被解析,會出現下載提示,如果想可以解析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 這里寫前面腳本返回的文件路徑;
}
本教程適合LNMP一鍵安裝包或自己安裝的LNMP,只不過目錄和配置文件可能位置不一樣。
設置完執行:/usr/local/nginx/sbin/nginx -t 測試配置是否有錯誤。
再執行:/usr/local/nginx/sbin/nginx -s reload 載入配置文件。
如有問題歡迎在本文下方留言或到VPS論壇交流反饋。
原創文章,謝絕轉載!
>>轉載請注明出處:VPS偵探 本文鏈接地址:http://www.0794baidu.com/build/nginx-htpasswd.html











@初中生, 添加多個auth_basic_user_file
如果我要添加多個用戶呢?
@小學生, 刪除認證文件后重新添加
如果想更改密碼要如何操作呢?
重新執行提示文件已存在。
@loren, 這個好像不行
如果只想加密根目錄,而子目錄依然可以訪問,如何設置?
重啟過啦,我設置的目錄是網站根目錄,跟這個有沒有關系?
@Leo, 沒重啟nginx
我設置了用戶名密碼都成功了,也配置了 訪問的時候沒有報錯,也沒有任何效果?