如何在CentOS7上使用Nginx设置基本HTTP身份验证
介绍
Nginx 是活跃使用的领先 Web 服务器之一。 它及其商业版 Nginx Plus 由 Nginx, Inc. 开发。
在本教程中,您将学习如何在 Ubuntu 14.04 上使用 HTTP 基本身份验证方法限制对 Nginx 支持的网站的访问。 HTTP 基本身份验证是一种简单的用户名和(散列)密码身份验证方法。
先决条件
要完成本教程,您需要以下内容:
- 一个具有 sudo 非 root 用户的 CentOS 7 Droplet,您可以按照 this initial server setup tutorial 进行设置。
- 在您的服务器上安装和配置 Nginx,您可以按照 this Nginx 安装教程 进行操作。
第 1 步 — 安装 HTTPD 工具
您需要 htpassword
命令来配置限制访问目标网站的密码。 此命令是 httpd-tools
包的一部分,因此第一步是安装该包。
sudo yum install -y httpd-tools
第 2 步 — 设置 HTTP 基本身份验证凭据
在此步骤中,您将为运行网站的用户创建密码。
该密码和相关的用户名将存储在您指定的文件中。 密码将被加密,文件的名称可以是您喜欢的任何名称。 在这里,我们使用文件 /etc/nginx/.htpasswd
和用户名 nginx。
要创建密码,请运行以下命令。
sudo htpasswd -c /etc/nginx/.htpasswd nginx
您可以检查新创建文件的内容以查看用户名和哈希密码。
cat /etc/nginx/.htpasswd
示例 /etc/nginx/.htpasswd
nginx:$apr1$ilgq7ZEO$OarDX15gjKAxuxzv0JTrO/
第 3 步 — 更新 Nginx 配置
现在您已经创建了 HTTP 基本身份验证凭据,下一步是更新 Nginx 配置以供目标网站使用。
auth_basic
和 auth_basic_user_file
指令使 HTTP 基本身份验证成为可能。 auth_basic
的值为任意字符串,会在认证提示时显示; auth_basic_user_file
的值是在步骤 2 中创建的密码文件的路径。
这两个指令都应该在目标网站的配置文件中,通常位于 /etc/nginx/
目录中。 使用 nano
或您喜欢的文本编辑器打开该文件。
sudo nano /etc/nginx/nginx.conf
在 server 部分下,添加两个指令:
/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; . . .
保存并关闭文件。
第 4 步 — 测试设置
要应用更改,首先重新加载 Nginx。
sudo systemctl reload nginx
现在尝试通过在您喜欢的浏览器中转到 http://your_server_ip/
来访问您刚刚保护的网站。 您应该会看到一个身份验证窗口(显示为“Private Property”,我们为 auth_basic
设置的字符串),并且在您输入正确的凭据之前,您将无法访问该网站。 如果输入您设置的用户名和密码,您将看到默认的 Nginx 主页。
结论
您刚刚完成了 Nginx 网站的基本访问限制。 Nginx 的文档 中提供了有关此技术和其他访问限制方法的更多信息 。