Nginx:HTTP基本认证机制

有些后台工作的网页,我们不需要给公众使用(不想给黑掉资料库嘛!),我们可以添加个HTTP基本认证机制。简单来说,访问这个网页时,会验证额外用户和密码。

Nginx Doc:模块ngx_http_auth_basic_module 允许使用“HTTP基本认证”协议验证用户名和密码来限制对资源的访问。

location  /  {
  auth_basic            "Restricted";
  auth_basic_user_file  htpasswd;
}

htpasswd 不一定放在 nginx.conf 的文件夹下,如果改了位置,记得更新这个文件到相应的目录下。

注意:指定保存用户名和密码的文件名不一定是 htpasswd!!

指定保存用户名和密码的文件,格式如下:

# comment
username1:encrypted-password:comment
username2:encrypted-password:comment
username3:encrypted-password:comment

htpasswd 文件可以添加多用户。可选添加注解。最主要,有用户名和加密后的密码。

还有记得把htpasswd 文件更换用户到nginx worker名下。LNMP.org安装包用户是 www。Nginx没权限读取,会返回5xx服务器错误。

# 更 htpasswd 换用户和读写权限
chown www htpasswd
chmod 640 htpasswd
# 使用 perl 来加密,大多数的机器都安装了 perl,如果没有 perl 请搜索其他加密方法.
# 密码应该使用crypt()函数加密。 可以用Apache发行包中的htpasswd命令来创建此类文件。
perl -le 'print crypt("你的密码", "salt-hash")'

例如:
我的用户名是 earth,密码是 abc123

在终端机输入:perl -le 'print crypt("abc123", "salt-hash")'

就返回加密后的密码就是 saNGkTZMeadBo

earth:saNGkTZMeadBo

HTTP基本认证机制配合客户端IP地址访问控制,够难黑了吧!!

参考:Nginx Doc