製作nginx目錄保護apache的htpasswd程序

版主: stnet253

回覆文章
tony
文章: 585
註冊時間: 2012-02-26, 07:04
聯繫:

製作nginx目錄保護apache的htpasswd程序

未閱讀文章 tony »

一直在Apache下使用HTTP basic auth(.htpasswd)來保護網站的某些目錄的訪問,現在VPS上換成了Nginx同樣需要保護一下。

Nginx下的配置也挺方便的,我們可以沿用由Apache的htpasswd模塊生成的.htpasswd文件作為密碼文件。注意,nginx 的http auth basic 的密碼是用crypt(3) 加密的,而apache是​​md5加密。所以生成時:

/usr/local/apache2/bin/htpasswd -c -d pass_file user_name
#回車輸入密碼,-c 表示生成文件,-d 是以crypt 加密。

對於lnmp用戶,一般不安裝apache了,文末老N會告訴你個生成方法。

我們將這個htpasswd文件放到nginx/conf下,記得chmod 400 htpasswd來保護一下。

然後修改nginx.conf:

server {
    server_name d8.neolee.com;
    root /var/www/d8.neolee.com;
    include /etc/nginx/fastcgi_php;
    location / {
     auth_basic "Password please";
     auth_basic_user_file /usr/local/nginx/conf/htpasswd;
      index index.php;
      if (!-e $request_filename) {
            rewrite ^(.*)$ /index.php last;
        }
    }

加入了

auth_basic "Password please";
auth_basic_user_file /usr/local/nginx/conf/htpasswd;

重啟nginx即可。
給了例子看看,請訪問http://d8.neolee.com 用戶名neo 密碼123

 

========

最後我們說下怎麼在nginx下生成htpasswd

下載這個python文件:http://trac.edgewall.org/export/10770/t ... tpasswd.py (nginx wiki裡推薦的)

以下是範例

chmod 777 htpasswd.py
./htpasswd.py -c -b htpasswd username password
#-c為生成文件 htpasswd為文件名

htpasswd.rar
(1.54 KiB) 已下載 2025 次
回覆文章

誰在線上

正在瀏覽這個版面的使用者:Semrush [Bot] 和 1 位訪客