# Nginx教程 - 12 开启basic认证

当你的站点不希望别人访问的时候,可以开启basic认证,开启basic认证后,访问站点需要用户名和密码。

# 12.1 生成账号密码

首先需要生成 htpasswd 账号密码文件。

可以百度搜索 htpasswd 在线生成,下面提供几个可以生成密码的网站:

  • https://playdos.com/htpasswd/

  • http://www.jsons.cn/htpasswd

加密算法选择 Crypt(all Unix servers)

然后将生成的密码保存到一个文件中,例如我保存到 /usr/local/nginx/conf/htpasswd 中。

doubi:32mNiC0FkBR/U
1

同时保证 Nginx 有权限访问这个文件。

# 12.2 修改Nginx配置

因为是限制站点的访问,所以需要修改 server 的配置。

location 中添加如下配置:

server {
    listen       80;  # 监听80端口
    server_name  localhost;    

    location / {
        auth_basic "Please authenticate";  # 启用基本认证,并设置提示信息为 "Please authenticate" 
        auth_basic_user_file /usr/local/nginx/conf/htpasswd;  # 指定包含用户名和密码的文件

        root   /home/doubi/html_1;  # 站点路径
        index  index.html;
    }   
}   
1
2
3
4
5
6
7
8
9
10
11
12
  • auth_basic "Please authenticate";: 启用基本认证,并设置提示信息为 "Please authenticate",现在的浏览器一般都不显示了。

  • auth_basic_user_file /usr/local/nginx/htpasswd;: 指定包含用户名和密码的文件,上一个步骤创建的。

# 12.3 访问站点

重新加载 Nginx 配置或重启 Nginx,然后访问站点。

访问站点,会提示输入用户名密码,认证通过后,才可以访问。


BASIC认证是HTTP/1.0及之后版本定义的一种认证方式,它通过将“用户名:密码”进行Base64编码后,放入HTTP请求头部的Authorization字段进行传输,用于服务端进行验证。所以密码实际上是以明文形式进行传输(Base64编码是可逆的),因此存在很高的安全风险。为了保障密码传输的安全,如果在网站中使用Basic认证,最好加上SSL认证(即开启HTTPS)。