nginx配置Http Basic Auth保护目录

post by rocdk890 / 2012-2-24 9:24 Friday linux技术

一直在Apache下使用HTTP basic auth(.htpasswd)来保护网站的某些目录的访问,现在VPS上换成了Nginx同样需要保护一下。

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

1 /usr/local/apache2/bin/htpasswd -c -d pass_file user_name
2 #回车输入密码,-c 表示生成文件,-d 是以 crypt 加密。

对于lnmp用户,一般不安装apache了,文末会告诉你个生成方法。

我们将这个htpasswd文件放到nginx/conf下,记得chmod 400 htpasswd来保护一下。

然后修改nginx.conf:

01 server {
02     server_name blog.slogra.com;
03     root /var/www/blog.slogra.com;
04     include /etc/nginx/fastcgi_php;
05     location / {
06      auth_basic            "Password please";
07      auth_basic_user_file  /usr/local/nginx/conf/htpasswd;
08         index index.php;
09         if (!-e $request_filename) {
10             rewrite ^(.*)$  /index.php last;
11         }
12     }
13 }

加入了

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

重启nginx即可。

 

========

最后我们说下怎么在nginx下生成htpasswd

下载这个python文件:http://trac.edgewall.org/export/10770/trunk/contrib/htpasswd.py (nginx wiki里推荐的)

运行示例

1 chmod 777 htpasswd.py
2 ./htpasswd.py -c -b htpasswd username password
3 #-c为生成文件 htpasswd为文件名
夜空- 本站版权
1、本站所有主题由该文章作者发表,该文章作者与夜空享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和夜空的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:blog.slogra.com/post-140.html

标签: nginx 配置 目录 保护 Http Basic Auth auth

评论: