nginx配置訪問密碼,讓用戶輸入用戶名密碼才能訪問

在 nginx 下,提供了 ngx_http_auth_basic_module 模塊實現讓用戶只有輸入正確的用戶名密碼才容許訪問web內容。默認狀況下,nginx 已經安裝了該模塊。因此總體的一個過程就是先用第三方工具設置用戶名、密碼(其中密碼已經加過密),而後保存到文件中,接着在 nginx 配置文件中根據以前事先保存的文件開啓訪問驗證。html

生成密碼能夠使用 htpasswd,或者使用 openssl 。下面以 htpasswd 爲例。java

1.安裝 htpasswd 工具

這裏直接 yum 進行安裝,你也可根據須要選擇編譯安裝:nginx

yum  -y install httpd-tools

設置用戶名和密碼,並把用戶名、密碼保存到指定文件中:
web

[root@qsh_server ~]# htpasswd -c /usr/local/src/nginx/passwd qiangsh
New password: 
Re-type new password: 
Adding password for user qiangsh

注意:上面的 /usr/local/src/nginx/passwd 是生成密碼文件的路徑,而後 qiangsh 是用戶名,你能夠根據須要自行設置成其它用戶名。運行命令後,會要求你連續輸入兩次密碼。輸入成功後,會提示已經爲 qiangsh 這個用戶添加了密碼。算法

咱們能夠看下最後生成的密碼文件的內容:app

[root@qsh_server ~]# cat /usr/local/src/nginx/passwd 
qiangsh:$apr1$DhlW8hIu$BXyCQ7hiEos1DiqgwEYcZ1

其中用戶名就是 coderschool ,分號後面就是密碼(已經加過密)。ide


2.修改 nginx 配置文件

找到 nginx 配置文件,由於咱們要對整個站點開啓驗證,因此在配置文件中的第一個server修改以下:工具

server {
   listen 80;
   server_name  localhost;
   .......
 
   #新增下面兩行
   auth_basic "Please input password"; #這裏是驗證時的提示信息 
   auth_basic_user_file /usr/local/src/nginx/passwd;
 
   location /{
   .......
}

而後重啓 nginx:加密

[root@qsh_server sbin]# ./nginx -t
nginx: the configuration file /usr/local/src/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/src/nginx/conf/nginx.conf test is successful
[root@qsh_server sbin]# ./nginx -s reload

上都配置無誤後,你從新訪問你的站點,若是出現須要身份驗證的彈窗就說明修改爲功了。下面介紹 htpasswd 命令的一些參數。spa

3.htpasswd選項參數

htpasswd [-cmdpsD] passwordfile username
htpasswd -b[cmdpsD] passwordfile username password
htpasswd -n[mdps] username
htpasswd -nb[mdps] username password
htpasswd命令選項參數說明:

-c 建立一個加密文件
-n 不更新加密文件,只將htpasswd命令加密後的用戶名密碼顯示在屏幕上
-m 默認htpassswd命令採用MD5算法對密碼進行加密
-d htpassswd命令採用CRYPT算法對密碼進行加密
-p htpassswd命令不對密碼進行進行加密,即明文密碼
-s htpassswd命令採用SHA算法對密碼進行加密
-b htpassswd命令行中一併輸入用戶名和密碼而不是根據提示輸入密碼
-D 刪除指定的用戶

更多htpasswd實例,請見:http://www.javashuo.com/article/p-gcopbwoi-bq.html

相關文章
相關標籤/搜索