在Nginx用htpasswd对网站进行密码保护

原文: http://www.fancycedar.info/2013/06/apache-nginx-htpasswd/ 很不错,一直在找,又是无意间看到了,无条件转发 很多时候我们需要对一些网站进行密码保护,比如团队内部的站点、demo站点等等。这里所说的密码保护是nginx服务器级的,并非网站应用层的注册登录那一套,而是利用nginx服务器配置和htpasswd文件来实现访问的密码验证。 最后的效果就类似(不同浏览器的界面有所不同): Authentication Required Authentication Required   如果认证失败,就会报HTTP错误: 401 Authorization Required。 要实现这样的功能,就需要更改服务器的配置,并设定好用于登录的用户名和密码。 首先我们需要更改网站的Nginx的server配置,Ubuntu服务器的话这个配置文件通常位于 /etc/nginx/sites-enabled/,比如我这里就使用默认的配置文件 /etc/nginx/sites-enabled/default来做一个例子:
  1. server {
  2.     server_name www.fancycedar.info
  3.     root /www/fancycedar
  4.     # ...
  5.     location / {
  6.         # 添加下面两行
  7.         auth_basic      "Restricted";
  8.         auth_basic_user_file  htpasswd;
  9.         # ...
  10.     }
  11.     # ...
  12. }
接下来需要创建htpasswd文件,这里有一些细节需要注意:
htpasswd的路径
和nginx.conf在同一级目录即可。Ubuntu服务器的话一般就在 /etc/nginx/下面。
htpasswd的内容
每一行为一个用户,格式为 username:password。但是要注意,这里的password不是明文,而是将password进行 crypt(3)加密后的字符串。 你可以使用一段PHP代码来生成htpasswd中的password:
  1. <?php
  2. // 密码明文
  3. $password = 'some password';
  4. // 对密码进行加密
  5. $password = crypt($password, base64_encode($password));
  6. // 获得加密后的密码
  7. echo $password;
  8. ?>
  然后将字符串写入htpasswd文件中:
  1. username1:xucqMk13TfooE
  2. username2:YXTfb3xWKOMBM
  3. ...
htpasswd的权限
需要更改htpasswd文件的权限,执行如下命令:
  1. sudo chown root:www-data htpasswd
  2. sudo chmod 640 htpasswd
Are You Ready?
当上面的准备工作都做好之后,我们就可以重新载入或者重启Nginx服务器了:
  1. sudo /etc/init.d/nginx reload
  2. # or
  3. sudo /etc/init.d/nginx restart
完工。

转载于:https://www.cnblogs.com/pcx69/archive/2013/06/09/3661236.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值