Nginx爲目錄或網站加上密碼認證

有時我們會有這麼一種需求,就是你的網站並不想提供一個公共的訪問或者某些頁面不希望公開,我們希望的是某些特定的客戶端可以訪問。那麼我們可以在訪問時要求進行身份認證,就如給你自己的家門加一把鎖,以拒絕那些不速之客。

實驗環境:

現在公司開通了一個內部使用網站爲www1.rsyslog.org,要求所有人查看網頁信息之前都必須要輸入內定的用戶名及密碼方可瀏覽網頁

有關nginx下虛擬主機的搭建請參看http://dreamfire.blog.51cto.com/418026/1141018 ,這裏使用之前搭建的虛擬主機www1.rsyslog.org進行測試。

www1.rsyslog.org 192.168.100.107

DNS1 192.168.100.102

一、查看當前系統參數

[root@rhel6u3-2 ~]# uname –r  //查看系統內核版本號 2.6.32-279.el6.i686 [root@rhel6u3-2 ~]# cat /etc/redhat-release //查看系統版本號 Red Hat Enterprise Linux Server release 6.3 (Santiago)

 

二、編輯虛擬主機配置文件

 

[root@rhel6u3-7 ~]# vim /usr/local/nginx/conf/nginx.conf //主配置文件中http字段中添加以下語句,將虛擬主機的配置文件指向www1.rsyslog.org include /usr/local/nginx/server/www1.rsyslog.org; [root@rhel6u3-7 ~]# vim /usr/local/nginx/server/www1.rsyslog.org server {      listen       80;  //監聽端口爲80      server_name  www1.rsyslog.org;  //虛擬主機網址       location / {             root   sites/www1;  //虛擬主機網站根目錄             index  index.html index.htm;  //虛擬主機首頁             auth_basic "secret";  //虛擬主機認證命名             auth_basic_user_file /usr/local/nginx/passwd.db; //虛擬主機用戶名密碼認證數據庫         }         location /status {                 stub_status on;  //開啓網站監控狀態                 access_log /usr/local/nginx/logs/www1_status.log; //監控日誌                 auth_basic "NginxStatus"; }     }

 

三、通過htpasswd命令生成用戶名及對應密碼數據庫文件。

 

[root@rhel6u3-7 server]# htpasswd -c /usr/local/nginx/passwd.db xiaonuo  //創建認證信息,xiaonuo 爲認證用戶名 New password: *******  //輸入認證密碼 Re-type new password: ********  //再次輸入認證密碼 Adding password for user xiaonuo [root@rhel6u3-7 server]# [root@rhel6u3-7 ~]# chmod 400 /usr/local/nginx/passwd.db  //修改網站認證數據庫權限 [root@rhel6u3-7 ~]# chown nginx.  /usr/local/nginx/passwd.db  //修改網站認證數據庫屬主和屬組 [root@rhel6u3-7 ~]# cat /usr/local/nginx/passwd.db  //可以看到通過htpasswd生成的密碼爲加密格式 xiaonuo:8eZAz7BqcrXmY [root@rhel6u3-7 ~]#

 

四、平滑重啓nginx服務

 

[root@rhel6u3-7 ~]# /etc/rc.d/init.d/nginx reload  //平滑重啓nginx服務 nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful Reloading nginx:                                           [  OK  ]

 

五、DNS服務器上添加www1 A記錄

 

www1    A   192.168.100.107

 

六、通過IE訪問www1.rsyslog.org進行測試。

別忘了將網卡首選DNS指向192.168.100.102

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章