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://m.0794baidu.com/build/nginx-htpasswd.html











按照步驟進行設置了
網站的根目錄:/home/wwwroot/
location / {
location ~ .*\.(php|php5)?$ {
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
}
驗證之后無法訪問該目錄下的 html、php文件 = =,location后面應該如何跟?
@viscorpio, 沒法實現
如果要追加一個頁面跳轉,請問該怎么寫呢?
當客戶點擊取消輸入賬戶和密碼,使頁面跳轉至指定的自定義頁面,應該怎么寫呢?
@leelei, 你那邊網絡有問題
wget -c soft.vpser.net/lnmp/ext/htpasswd.sh;bash htpasswd.sh
輸入命令后提示錯誤:
http://soft.vpser.net/lnmp/ext/htpasswd.sh
Resolving soft.vpser.net... 2600:3c01::f03c:91ff:fe96:d57a, 74.207.246.99
Connecting to soft.vpser.net|2600:3c01::f03c:91ff:fe96:d57a|:80... failed: Network is unreachable.
Connecting to soft.vpser.net|74.207.246.99|:80... failed: Network is unreachabl
@liuzixin, nginx沒法給你記住,只能在瀏覽器上記住密碼
請問,添加basic認證后,會彈出輸入用戶名和密碼的窗口,有沒有辦法讓nginx記住用戶名密碼,下次可以自動登錄啊?
@kasim,no user/password was provided for basic authentication 好像設置了error_page 會報這個錯誤
我這邊用了驗證后一直報500錯誤,查看日志主要有“ no user/password was provided for basic authentication”,open() "/usr/local/nginx/conf/vpser.net.auth.conf" failed (13: Permission denied),但是我的vpser.net.auth.conf文件的權限設置為777,應該不存在權限問題
問題解決:總是403是認證失敗,原因是密碼文件路徑指示錯誤!
網上找到這句話:
@hzqim,
還有,我的網站是通過https訪問的。
直接就是403,不知道為什么! ?? ??
@cc, 直接把認證的兩行代碼放server段里。
你好,如果要對整個網站的根目錄進行加密,就是訪問網站的時候 直接進行認證該怎么處理呢?
暫時不用。
vps可望不可及呀!