如何在CentOS7上使用Nginx设置基本HTTP身份验证

来自菜鸟教程
跳转至:导航、​搜索

介绍

Nginx 是活跃使用的领先 Web 服务器之一。 它及其商业版 Nginx Plus 由 Nginx, Inc. 开发。

在本教程中,您将学习如何在 Ubuntu 14.04 上使用 HTTP 基本身份验证方法限制对 Nginx 支持的网站的访问。 HTTP 基本身份验证是一种简单的用户名和(散列)密码身份验证方法。

先决条件

要完成本教程,您需要以下内容:

第 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_basicauth_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 的文档 中提供了有关此技术和其他访问限制方法的更多信息