# 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
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)。