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

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

介绍

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

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

先决条件

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

第 1 步 — 安装 Apache 工具

您需要 htpassword 命令来配置限制访问目标网站的密码。 此命令是 apache2-utils 包的一部分,因此第一步是安装该包。

sudo apt-get install apache2-utils

第 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/sites-available 目录中。 使用 nano 或您喜欢的文本编辑器打开该文件。

sudo nano /etc/nginx/sites-available/default

location 部分下,添加两个指令:

/etc/nginx/sites-available/default.conf

. . .
server_name localhost;

location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
        # Uncomment to enable naxsi on this location
        # include /etc/nginx/naxsi.rules
        auth_basic "Private Property";
        auth_basic_user_file /etc/nginx/.htpasswd;
}
. . .

保存并关闭文件。

第 4 步 — 测试设置

要应用更改,首先重新加载 Nginx。

sudo service nginx reload

现在尝试通过在您喜欢的浏览器中转到 http://your_server_ip/ 来访问您刚刚保护的网站。 您应该会看到一个身份验证窗口(显示为“Private Property”,我们为 auth_basic 设置的字符串),并且在您输入正确的凭据之前,您将无法访问该网站。 如果输入您设置的用户名和密码,您将看到默认的 Nginx 主页。

结论

您刚刚完成了 Nginx 网站的基本访问限制。 Nginx 的文档 中提供了有关此技术和其他访问限制方法的更多信息