使用 nginx 为网站添加身份验证

为了实现个人网站的私密访问,需要添加身份验证,即访问网站的时候要求输入用户名和密码,效果如下:

看了好多教程感觉略繁琐,其实使用nginx为网站添加身份验证登陆只需两个步骤:

  1. 生成加密的验证信息文件
  2. 修改网站的nginx配置文件

一、生成密码文件

nginx用以验证登陆的密码是以文件形式储存的,但并非明文储存,而是通过加密的,我们可以用apache2-utils工具的htpasswd命令生成

1. 安装工具

apt-get update
apt-get install apache2-utils

安装完毕即可使用htpasswd命令

2. 生成密码

生成.htpasswd文件,添加用户user,会要求输入密码两次: (文件名、用户名、文件保存路径 均可以自行设置)

htpasswd -c /etc/nginx/.htpasswd user

若要添加多个用户,则去掉-c命令:

htpasswd /etc/nginx/.htpasswd another_user

查看已生成的密码文件cat /etc/nginx/.htpasswd ,格式为用户名:密码

二、添加验证

编辑网站配置文件,以 test.k162.cn 为例

vi /etc/nginx/conf.d/test.k162.cn.conf

location / {...}句段添加:

auth_basic "Restricted Content";  #提示文字,任意输入
auth_basic_user_file /etc/nginx/.htpasswd; #指向第一步生成的密码文件

重启nginx即可service nginx restart

参考

How To Set Up Password Authentication with Nginx on Ubuntu 14.04