Nginx是主动使用的领先Web服务器之一。它及其商业版Nginx Plus由Nginx,Inc。开发。
在本教程中,您将学习如何使用Ubuntu 14.04上的HTTP基本身份验证方法限制对基于Nginx的网站的访问。HTTP基本身份验证是一种简单的用户名和(哈希)密码身份验证方法。
要完成本教程,您需要以下内容:
sudo
命令的非root账号的CentOS 7 服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。您将需要该htpassword
命令来配置将限制对目标网站的访问的密码。此命令是httpd-tools
程序包的一部分,因此第一步是安装该程序包。
sudo yum install -y httpd-tools
在此步骤中,您将为运行网站的用户创建密码。
该密码和关联的用户名将存储在您指定的文件中。密码将被加密,文件名可以是您喜欢的任何名称。在这里,我们使用文件/etc/nginx/.htpasswd
和用户名nginx。
要创建密码,请运行以下命令。
sudo htpasswd -c /etc/nginx/.htpasswd nginx
您可以检查新创建的文件的内容以查看用户名和散列密码。
cat /etc/nginx/.htpasswd
nginx:$apr1$ilgq7ZEO$OarDX15gjKAxuxzv0JTrO/
现在您已经创建了HTTP基本身份验证凭据,下一步是更新目标网站的Nginx配置以使用它。
auth_basic
和auth_basic_user_file
指令使HTTP基本认证成为可能。值为auth_basic
任意字符串,将在身份验证提示下显示; value auth_basic_user_file
是在步骤2中创建的密码文件的路径。
两个指令都应该位于目标网站的配置文件中,目标网站通常位于/etc/nginx/
目录中。使用nano
或您喜欢的文本编辑器打开该文件。
sudo nano /etc/nginx/nginx.conf
在服务器部分下,添加两个指令:
. . .
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
auth_basic "Private Property";
auth_basic_user_file /etc/nginx/.htpasswd;
. . .
保存并关闭文件。
要应用更改,请先重新加载Nginx。
sudo systemctl reload nginx
现在用您最喜欢的浏览器访问http://your_server_ip/
尝试访问您刚刚保护的网站。您应该看到一个身份验证窗口(显示“私有财产”,我们设置的字符串auth_basic
),在您输入正确的凭据之前,您将无法访问该网站。如果输入您设置的用户名和密码,您将看到默认的Nginx主页。
您刚刚完成了Nginx网站的基本访问限制。有关此技术和其他访问限制方法的更多信息,请参阅Nginx的文档。
更多CentOS教程请前往腾讯云+社区学习更多知识。
参考文献:《How To Set Up Basic HTTP Authentication With Nginx on CentOS 7》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。