步骤1:建立保存用户名和密码的文件html
首先,咱们须要建立一个文件来保存咱们的用户名和密码组合。您能够经过使用服务器上可能已有的OpenSSL实用程序来完成此操做。或者,您能够使用apache2-utils软件包中包含的专用htpasswd实用程序(Nginx密码文件使用与Apache相同的格式)。选择你最喜欢的方法nginx
1. 使用OpenSSL实用程序建立密码文件apache
若是您的服务器上安装了OpenSSL,则能够建立没有附加软件包的密码文件。咱们将在/ etc / nginx配置目录中建立一个名为.htpasswd的隐藏文件来存储咱们的用户名和密码组合。 服务器
您能够使用此命令向该文件添加用户名。咱们使用sammy做为咱们的用户名,但您能够使用任何您想要的名称:网络
sudo sh -c "echo -n 'sammy:' >> /etc/nginx/.htpasswd"工具
接下来,输入如下内容为用户名添加加密的密码条目:网站
sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd" 加密
您能够重复此过程以获取更多用户名。您能够经过键入如下内容来查看用户名和加密密码是如何存储在文件中的:spa
cat /etc/nginx/.htpasswd rest
Output
sammy:$apr1$wI1/T0nB$jEKuTJHkTOOWkopnXqC1d1
2. 使用Apache实用程序建立密码文件
尽管OpenSSL能够对Nginx身份验证的密码进行加密,但许多用户发现使用专用的实用程序更容易。在apache2-utils包中找到的htpasswd实用程序能够很好地使用该功能。
输入如下命令,在服务器上安装apache2-utils软件包:
sudo apt-get install apache2-utils
如今,您能够访问htpasswd命令。咱们能够使用它来建立一个Nginx能够用来验证用户的密码文件。咱们将在/ etc / nginx配置目录中为此目的建立一个名为.htpasswd的隐藏文件。
咱们第一次使用这个工具时,咱们须要添加-c选项来建立指定的文件。咱们在命令末尾指定一个用户名(在这个例子中是sammy)在文件中建立一个新的条目:
sudo htpasswd -c /etc/nginx/.htpasswd sammy
系统会要求您提供并确认用户的密码。
为但愿添加的其余用户省略-c参数:
sudo htpasswd /etc/nginx/.htpasswd another_user
步骤2:配置Nginx密码验证
1. 如今咱们有一个文件,其中的用户和密码是Nginx能够读取的格式,咱们须要配置Nginx在提供受保护的内容以前检查该文件。
首先打开您但愿添加限制的服务器块配置文件。对于咱们的示例,咱们将使用经过Ubuntu的Nginx包安装的默认服务器块文件:
sudo nano /etc/nginx/sites-enabled/default
要设置身份验证,您须要决定要限制的上下文。在其余选择中,Nginx容许您在服务器级别或特定位置内设置限制。在咱们的示例中,咱们将使用位置块限制整个文档根目录,可是您能够修改此列表以仅针对网络空间中的特定目录:
在此位置块中,使用auth_basic指令打开身份验证并选择在提示凭据时向用户显示的领域名称。咱们将使用auth_basic_user_file指令将Nginx指向咱们建立的密码文件:
完成后保存并关闭文件。从新启动Nginx以实施您的密码策略:
sudo service nginx restart