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

介绍

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

在本教程中,您将学习如何使用 Ubuntu 14.04 上的 HTTP 基本身份验证方法限制访问 Nginx 驱动的网站。

前提条件

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

步骤1:安装 HTTPD 工具

您将需要htpassword命令来配置密码,以限制访问目标网站. 此命令是httpd-tools包的一部分,所以第一步是安装该包。

1sudo yum install -y httpd-tools

步骤 2:设置基本的 HTTP 身份验证凭证

在此步骤中,您将为运行网站的用户创建密码。

该密码和相关的用户名将存储在您指定的文件中。密码将被加密,文件的名称可以是您想要的任何东西。

要创建密码,运行以下命令。

1sudo htpasswd -c /etc/nginx/.htpasswd nginx

您可以检查新创建的文件的内容,查看用户名和哈希密码。

1cat /etc/nginx/.htpasswd
1[label Example /etc/nginx/.htpasswd]
2nginx:$apr1$ilgq7ZEO$OarDX15gjKAxuxzv0JTrO/

第3步:更新 Nginx 配置

现在您已经创建了基本的 HTTP 身份验证凭证,下一步是更新目标网站使用的 Nginx 配置。

HTTP 基本身份验证是通过 auth_basicauth_basic_user_file 指令实现的. auth_basic 的值是任何字符串,并将在身份验证提示中显示; auth_basic_user_file 的值是在步骤 2 中创建的密码文件的路径。

这两个指令都应该在目标网站的配置文件中,通常位于 /etc/nginx/ 目录中。

1sudo nano /etc/nginx/nginx.conf

服务器部分中,添加两个指令:

 1[label /etc/nginx/nginx.conf]
 2. . .
 3server {
 4    listen 80 default_server;
 5    listen       [::]:80 default_server;
 6    server_name _;
 7    root         /usr/share/nginx/html;
 8
 9    auth_basic "Private Property";
10    auth_basic_user_file /etc/nginx/.htpasswd;
11. . .

保存并关闭文件。

步骤 4 – 测试设置

要应用这些更改,请先重新加载 Nginx。

1sudo systemctl reload nginx

现在尝试访问您刚刚通过在您最喜欢的浏览器中访问http://your_server_ip/的网站,您应该提供一个身份验证窗口(它说私有财产,我们为auth_basic设置的字符串),并且您将无法访问网站,直到您输入正确的凭证。 如果您输入您设置的用户名和密码,您将看到默认的Nginx主页。

结论

您刚刚完成了 Nginx 网站的基本访问限制。 有关此技术和其他访问限制手段的更多信息可在 Nginx 文档中找到(https://www.nginx.com/resources/admin-guide/restricting-access/)。

Published At
Categories with 技术
comments powered by Disqus