Nginx 訪問認證
應用環境:
企業內部人員,訪問一些企業內部的網站,例如phpmyadmin或者公司的一些文檔服務器
Nginx配置:
安裝httpd,爲了實現Nginx可以使用htpasswd命令
[root@node1 vhost]# yum -y install httpd # 安裝httpd,爲了實現Nginx可以使用htpasswd命令
[root@node1 ~]# mkdir /usr/local/nginx/conf/htpasswd/ #創建存放用戶和密碼的目錄
[root@node1 ~]# htpasswd -bc /usr/local/nginx/conf/htpasswd/test_user user password #創建一個用戶密碼文件
test_user:文件名稱
user:用戶
password:密碼(是經過加密的)
[root@node1 htpasswd]# cat test_user
user:wPqXPPVO5ad9M #用戶和加密密碼
Nginx配置文件:
server
{
listen 80;
server_name learn1.proxy.com;
index index.php index.html index.htm;
root /data/www/learn1.proxy.com;
error_log /data/weblogs/learn1_error.log crit;
access_log /data/wwwlogs/learn1.log access;
location / {
auth_basic "Please Input Password..."; #提示信息
auth_basic_user_file /usr/local/nginx/conf/htpasswd/test_user; #用戶密碼文件存放路徑,這裏寫絕對路徑,否則會報錯403
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
}
測試:
htpasswd命令選項參數說明:
-c創建一個加密文件。
-n不更新加密文件,只將htpasswd命令加密後的用戶名和密碼顯示在屏幕上。
-m默認htpassswd命令採用MD5算法對密碼進行加密,該參數默認情況下可以不加。
-d表示htpassswd命令採用CRYPT算法對密碼進行加密。
-s表示htpassswd命令採用SHA算法對密碼進行加密。
-p表示htpassswd命令不對密碼進行進行加密,即明文密碼。
-b表示在htpassswd命令行中一併輸入用戶名和密碼而不是根據提示輸入密碼。
-D表示刪除指定的用戶。
[root@node1 htpasswd]# htpasswd -b test_user bbb bbb #添加新用戶
Adding password for user bbb #添加用戶提示信息
[root@node1 htpasswd]# cat test_user #內容
user:wPqXPPVO5ad9M
bbb:V1wqRumuBNlKE
添加新用戶時,不可以使用htpasswd -bc test_user bbb bbb這樣的方式進行添加,否則會覆蓋已有用戶。
[root@node1 htpasswd]# htpasswd -D test_user bbb #刪除用戶
Deleting password for user bbb #刪除用戶提示信息
[root@node1 htpasswd]# cat test_user
user:wPqXPPVO5ad9M