在Nginx用htpasswd对网站进行密码保护的设置方法

 更新时间:2013年06月10日 20:00:27   作者:  
很多时候我们需要对一些网站进行密码保护,比如团队内部的站点、demo站点等等。这里所说的密码保护是服务器级的,并非网站应用层的注册登录那一套,而是利用服务器配置和htpasswd文件来实现访问的密码验证

最后的效果就类似(不同浏览器的界面有所不同):

Authorization Required

如果认证失败,就会报HTTP错误:401 Authorization Required。

要实现这样的功能,就需要更改服务器的配置,并设定好用于登录的用户名和密码。

首先我们需要更改网站的Nginx的server配置,Ubuntu服务器的话这个配置文件通常位于/etc/nginx/sites-enabled/,比如我这里就使用默认的配置文件/etc/nginx/sites-enabled/default来做一个例子:

复制代码 代码如下:

server {
server_name www.fancycedar.info
root /www/fancycedar

# ...

location / {
# 添加下面两行
auth_basic "Restricted";
auth_basic_user_file htpasswd;
# ...
}

# ...
}


接下来需要创建htpasswd文件,这里有一些细节需要注意:

htpasswd的路径
和nginx.conf在同一级目录即可。Ubuntu服务器的话一般就在/etc/nginx/下面。

htpasswd的内容
每一行为一个用户,格式为username:password。但是要注意,这里的password不是明文,而是将password进行crypt(3)加密后的字符串。

你可以使用一段PHP代码来生成htpasswd中的password:

复制代码 代码如下:

// 密码明文
$password = 'some password';
// 对密码进行加密
$password = crypt($password, base64_encode($password));
// 获得加密后的密码
echo $password;


然后将字符串写入htpasswd文件中:

复制代码 代码如下:

username1:xucqMk13TfooE
username2:YXTfb3xWKOMBM
...


htpasswd的权限

需要更改htpasswd文件的权限,执行如下命令:

复制代码 代码如下:

sudo chown root:www-data htpasswd
sudo chmod 640 htpasswd


Are You Ready?

当上面的准备工作都做好之后,我们就可以重新载入或者重启Nginx服务器了:

复制代码 代码如下:

sudo /etc/init.d/nginx reload
# or
sudo /etc/init.d/nginx restart


完工。

在Nginx下对网站进行密码保护

P.S. 不要忘记你设定的密码是啥了……

原文链接:http://www.fancycedar.info/2013/06/apache-nginx-htpasswd/

相关文章

  • nginx反向代理proxy_pass遇到的死循环问题

    nginx反向代理proxy_pass遇到的死循环问题

    这篇文章主要介绍了nginx反向代理proxy_pass遇到的死循环问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Nginx配置文件(nginx.conf)配置详解(总结)

    Nginx配置文件(nginx.conf)配置详解(总结)

    本篇文章主要介绍了Nginx配置文件(nginx.conf)配置详解,这对初学者有一定的参考价值,有兴趣的可以了解一下。
    2016-12-12
  • keepalived + nginx 实现高可用方案

    keepalived + nginx 实现高可用方案

    这篇文章主要介绍了keepalived + nginx 实现高可用方案的相关资料,需要的朋友可以参考下
    2022-12-12
  • 一文带你搞懂Nginx如何处理请求

    一文带你搞懂Nginx如何处理请求

    Nginx(Engine X)是一个高性能的HTTP和反向代理服务器,本文将从原理、代码以及示例来深入分析 Nginx如何处理请求,希望对大家有所帮助
    2024-11-11
  • Nginx跨域问题解析与解决

    Nginx跨域问题解析与解决

    本地运行一个项目,要访问外域的api接口,存在跨域问题,下面这篇文章主要给大家介绍了关于如何使用Nginx解决跨域问题的相关资料,文中介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • Nginx服务器配置https安全协议的实现

    Nginx服务器配置https安全协议的实现

    HTTP是互联网中最常用的协议,用于从服务器传输超文本到浏览器,HTTPS是HTTP的安全版本,本文就来介绍一下Nginx服务器配置https安全协议的实现,感兴趣的可以了解一下
    2024-09-09
  • Nginx隐藏和伪造版本号的操作方法

    Nginx隐藏和伪造版本号的操作方法

    这篇文章主要介绍了Nginx隐藏和伪造版本号的操作方法,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • 关于nginx没有跳转到upstream地址的解决

    关于nginx没有跳转到upstream地址的解决

    这篇文章主要介绍了关于nginx没有跳转到upstream地址的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 使用AWS的ELB服务时为Nginx启用代理协议的步骤讲解

    使用AWS的ELB服务时为Nginx启用代理协议的步骤讲解

    这篇文章主要介绍了使用AWS的ELB服务时为Nginx启用代理协议的步骤讲解,ELB服务是亚马逊服务器提供的常用的负载均衡方案,需要的朋友可以参考下
    2015-12-12
  • nginx解决跨域问题的实例方法

    nginx解决跨域问题的实例方法

    在本篇文章里小编给各位分享了关于nginx怎么解决跨域问题的方法和实例代码,需要的朋友们参考下。
    2019-07-07

最新评论