/* * 環境:LNMP(CentOS 6.6 + Nginx 1.8.0) */
在 Nginx 下配置 Basic 認證需要依靠 Nginx 的 http_auth_basic_module 模塊(官方文檔:http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html)
配置過程:
① 生成認證文件,形式為 用戶名:密碼
密碼采用 crypt 方式加密(用戶名:user ,密碼:123456)
文件保存在 /usr/local/nginx/conf 下
生成文件:
[root@localhost conf]# printf "user:$(openssl passwd -crypt 123456)\n" >>htpasswd
查看該文件:
② 配置 /usr/local/nginx/conf/nginx.conf 文件,在 location 段中加上 auth_basic 和 auth_basic_user_file :
location \ { auth_basic "login"; auth_basic_user_file /usr/local/nginx/conf/htpasswd; }
其中 auth_basic 為彈出框的提示語,可自定義
auth_basic_user_file 為認證文件的路徑,可以寫絕對路徑,也可以只寫文件名(默認的路徑是 /usr/local/nginx/conf )
平滑重啟 Nginx。
此時訪問 192.168.254.100,提示認證:
如果輸入錯誤,彈出框會繼續彈出;
如果取消輸入,則響應 401 Unauthorized:
輸入正確,則響應 200 OK。
=====================
附:PHP 模擬 Basic 認證
<?php $user = 'dee'; $pwd = '12345'; if($_SERVER['PHP_AUTH_USER'] != $user || $_SERVER['PHP_AUTH_PW'] != $pwd ) { header('Content-type:text/html;charset=utf-8'); header('WWW-Authenticate: Basic realm="加密傳輸"'); header('HTTP/1.1 401 Unauthorized'); echo '請提供正確的用戶名和密碼'; exit; } echo 'Hello';
參考:
http://blog.chenlb.com/2010/03/nginx-http-auth-basic.html