我尝试使用 Nginx 进行基本身份验证

你好,我是肯。

上次我们使用 Apache 设置了基本身份验证。在我的上一篇博文中,我提到过我也会使用 nginx 进行基本身份验证,所以这篇文章我想介绍一下如何使用 nginx 设置基本身份验证。和往常一样,我将使用 Vagrant 来演示从安装 nginx 到设置虚拟主机以及配置基本身份验证的所有步骤。希望您能一直看到最后。

本次使用的环境和版本

VirtualBox 版本 6.1

Vagrant 版本 2.2.19

centos/7

nginx 版本 nginx/1.23.1

 

本博客的目标和流程

这次的目标

本博客的目标是对 nginx 中配置的虚拟主机页面应用基本身份验证。

设置步骤

  1. 编辑 vagrantfile 并启动 vagrant
  2. 使用 vagrant ssh 进入服务器
  3. 安装 nginx
  4. 设置虚拟主机
  5. 应用基本身份验证

我会大致解释以上步骤,所以如果您已经知道某些步骤,可以跳过!

 让我们通过 SSH 登录到使用 Vagrant 启动的虚拟服务器。

为了使用 vagrant ssh,我们还将在这里实现我们为 Apache 基本身份验证所做的设置。

编辑 vagrantfile 文件,以在本地环境中启用互联网连接。

以下是一个 Vagrantfile 示例,其中包含以下设置:

您只需要连接即可

 config.vm.network "private_network", ip: "192.168.43.20"

具体如下。

  # -*- mode: ruby​​ ​​-*- # vi: set ft=ruby : # 所有 Vagrant 配置如下。Vagrant.configure 中的“2”# 配置配置版本(我们支持旧版本以保持向后兼容性)。除非您清楚自己在做什么,否则请勿更改。Vagrant.configure("2") do |config| # 每个 Vagrant 开发环境都需要一个 box。您可以在 https://vagrantcloud.com/search 搜索 box。config.vm.box = "centos/7" # 创建一个端口转发映射,允许从主机上的端口访问虚拟机中的特定端口。在下面的示例中,# 访问“localhost:8080”将访问虚拟机上的 80 端口。 # 注意:这将启用对已打开端口的公共访问。config.vm.network "forwarded_port", guest: 80, host: 8080 # 创建一个私有网络,允许主机使用特定 IP 地址访问虚拟机。config.vm.network "private_network", ip: "192.168.43.20" end

编辑完成后,运行 vagrant up。

流浪汉向上

vagrant up 完成后,使用 vagrant ssh 连接。

 

vagrant ssh 

正如你所料,这与之前关于使用 Apache 基本身份验证的文章完全相同。

抱歉,但我认为最好还是加上这部分,所以如果好心人能忽略它,直接说声谢谢就太好了……
如果您能登录,说明这一步成功了。接下来,我们来安装nginx。

让我们安装 nginx

上次安装 Apache 的时候,我直接就安装了 httpd,根本没考虑其他问题,但 nginx 可没那么简单。如果你直接尝试安装它,它会告诉你根本没有这个组件。所以,在开始安装之前,我们先来了解一下安装的流程。

  • 请注意,本文假设您已执行了 yum update 命令。

首先,我们来创建一个nginx仓库。

sudo vi /etc/yum.repos.d/nginx.repo

现在您已经打开了 nginx.repo,请在编辑器中输入以下设置。

[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1

写完以上内容后,使用 :wq 保存。

现在我们来安装nginx。

sudo yum install nginx

安装完成。如果没有问题,请启动nginx。

sudo systemctl start nginx

最后,输入 http://localhost:8080,如果出现通常的 nginx 页面,则 nginx 的安装和启动就完成了。

接下来,我们来创建一个虚拟主机。

让我们创建一个虚拟主机(*有点繁琐)

首先,为虚拟主机创建文档根目录。(虚拟主机有时也写作 vhost。)

*由于这次我们使用的是 CentOS,默认情况下 sites-available 和 sites-enabled 目录不存在,因此我们需要创建它们。但是,如果您使用的是基于 Debian 的操作系统,根据 Apache 的约定,它们已经存在,因此无需创建 sites-available 和 sites-enabled 目录。

mkdir -p /var/www/vhosts/example.com/public_html

创建完成后,转到 public_html 目录并创建 index.html 文件。

sudo vi index.html

按所需内容输入,然后按 :wq 保存。

在 Nginx 中,要配置虚拟主机,需要创建名为 sites-available 和 sites-enabled 的目录,并在这两个目录下配置虚拟主机。这两个目录稍后会进行符号链接。首先,创建上述两个目录。

mkdir /etc/nginx/sites-available

再创建一个

mkdir /etc/nginx/sites-enabled

创建好这两个目录后,创建虚拟主机的配置文件。

在这种情况下,域名是 example.com,所以文件名将是 example.com.conf。

描述将写成如下形式:

server { listen 80; servername example.com; location / { root/var/www/vhosts/example.com/public_html; index index.html index.php; } }

编写完成后,使用 :wq 保存。然后,创建指向 sites-available 目录和 sites-enabled 目录的符号链接。

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf

为了让 nginx 读取上述设置,我们将把它们写入 nginx.conf 文件中。

以下是需要写的内容。

包含 /etc/nginx/sites-enabled/*;

将此内容写入 nginx.conf 文件的末尾。

用户 nginx;工作进程数 1;错误日志 /var/log/nginx/error.log 警告;进程 ID /var/run/nginx.pid;事件 { 工作连接数 1024; } http { 包含 /etc/nginx/mime.types;默认类型 application/octet-stream;日志格式 main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';访问日志 /var/log/nginx/access.log main;sendfile on;#tcp_nopush on;keepalive_timeout 65;#gzip on;包含 /etc/nginx/sites-enabled/*;#添加部分 include /etc/nginx/conf.d/*.conf; }

配置完成后,我们可以进行语法检查了。

nginx -t

如果看到“语法正确”和“配置文件成功”的消息,则可以确定没有问题。最后,重启 nginx 以使设置生效。

sudo systemctl restart nginx

别忘了编辑 hosts 文件。

任何 IP 地址示例.com

将此内容添加到 hosts 文件中并保存。

*除非以管理员权限运行,否则设置不会生效。因此,在打开 hosts 文件之前,请先以管理员权限运行记事本或类似编辑器。

现在,如果您在浏览器中搜索 http://example.com,并且显示了您在设置过程中输入的信息,则说明设置已完成。

虚拟主机设置完成后,最后一步是设置基本身份验证。

让我们对已设置的虚拟主机应用基本身份验证。

使用 Apache 时,ht 工具已经安装,所以不会有问题。但是,使用 nginx 时,ht 工具没有安装,因此无法使用 htpasswd 命令。所以,我们首先需要安装这些工具。

sudo yum install httpd-tools

安装完成后,使用 htpasswd 命令准备基本身份验证。

htpasswd -c /var/www/vhosts/example.com/.htpasswd 用户名

注册你喜欢的任何用户名和密码。

为了确保万无一失,请确认您已创建正确的用户名和密码。

cat /var/www/vhosts/example.com/.htpasswd

如果显示了您设置的用户名和哈希值,则说明设置已正确完成。

最后,要启用基本身份验证,请将 auth_basic 和 auth_basic_user_file 添加到 example.com.conf。

server { listen 80; servername example.com; location / { root /var/www/vhosts/example.com/public_html; index index.html index.php; auth_basic auth_nginx_test; auth_basic_user_file /var/www/vhosts/example.com/.htpasswd; } }

写入完成后,请重启 nginx。如果启用了基本身份验证,系统会提示您输入用户名和密码。

至此,nginx 中的基本身份验证配置完成。

 

如果您觉得这篇文章有帮助,请点赞!
7
加载中...
7 票,平均:1.00 / 17
7,847
X Facebook 哈特纳书签 口袋

写这篇文章的人

关于作者

2022 年应届毕业生加入 Beyond。目前
在系统解决方案部门
。研究生毕业之前我一直在学习语言学,并接受了成为基础设施工程师的挑战。我
建立了一个名为 Beyond Cafe Club 的内部俱乐部,并且充满热情关于每天煮咖啡和茶。ing