我尝试使用 Nginx 进行基本身份验证
目录
你好,我叫肯。
上次,我们使用apache来执行基本身份验证。在我之前的博客中,我宣布我将使用 nginx 进行基本身份验证,因此在本文中我想写一下如何使用 nginx 设置基本身份验证。这次我也想使用Vagrant来介绍从安装nginx到设置虚拟主机以及如何进行基本身份验证的所有内容。我希望你能一直滚动到最后。
本次使用的环境及版本
虚拟机版本 6.1
流浪者版本2.2.19
分/7
nginx 版本 nginx/1.23.1
此博客的目标和步骤
这次的目标
本博客的目标是将基本身份验证应用于使用 nginx 设置的虚拟主机页面。
设置步骤
- 编辑vagrantfile并启动vagrant
- 使用vagrant ssh进入服务器
- 安装nginx
- 设置虚拟主机
- 执行基本身份验证
我将大致遵循上述步骤,因此请随意跳过您已经知道的步骤! !
使用SSH登录Vagrant启动的虚拟服务器
为了使用vagrant ssh,我们还将在这里实现apache基本身份验证部分中所做的设置。
编辑 vagrantfile 以在本地环境中启用互联网连接。
Vagrantfile 的示例具有以下设置。
您需要连接的是
config.vm.network“私有网络”,IP:“192.168.43.20”
就变成了。
# -*- mode: ruby -*- # vi: set ft=ruby : # 所有 Vagrant 配置均在下面完成。 Vagrant.configure 中的“2”配置配置版本(我们支持旧样式以实现向后兼容。 ). 除非您知道 # Vagrant.configure("2") 做什么 |config| # 您可以在 https:// 中搜索 # 个框。 vagrantcloud. 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 连接,
流浪者 ssh
正如您可能已经猜到的,这与上一篇关于使用 apache 使用基本身份验证的文章完全相同。
对不起,但我想如果你能好心说一声谢谢就更好了,但如果你能忽略它,我会很高兴。 。 。 。
如果能登录就成功了。接下来,让我们安装nginx。
让我们安装nginx
上次我安装Apache时,我想都没想就能安装httpd,但是nginx不是那样的。如果你突然尝试安装某些东西,你会被告知没有这样的东西。因此,在继续安装之前,让我们先做一些艰苦的工作。
- 请注意,我写这篇文章的前提是您已经完成了 yum 更新。
首先,让我们为 nginx 创建一个存储库。
sudo vi /etc/yum.repos.d/nginx.repo
现在您可以打开 nginx.repo,在编辑器中编写以下设置。
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0enabled=1
创建上述描述后,使用 :wq 保存。
接下来,让我们安装nginx。
sudo yum 安装 nginx
安装现已完成。如果没有问题的话,我们就启动nginx吧。
sudo systemctl 启动 nginx
最后输入http://localhost:8080,当显示通常的nginx页面时,nginx的安装启动就完成了。
接下来,让我们创建一个虚拟主机。
让我们创建一个虚拟主机(*有点麻烦)
首先,为 Virtualhost 创建一个文档根目录。 (有时它的意思是 Virtualhost = vhost。)
*由于我们这次使用的是centoOS,sites-available和sites-enabled默认不存在,所以我们需要创建它们。但是,当使用基于 Debian 的操作系统时,不需要创建sites-available 和sites-enabled,因为它们遵循 apache 约定而存在。
mkdir -p /var/www/vhosts/example.com/public_html
创建完成后,转到public_html并创建index.html。
须藤 vi 索引.html
根据需要填写内容,按:wq,然后保存。
在nginx中,要配置vhost,您需要创建名为sites-available和sites-enabled的目录,并在它们下配置它们。稍后我们将在这两个目录之间创建符号链接。首先,创建上面提到的两个目录。
mkdir /etc/nginx/sites-available
创建另一个
mkdir /etc/nginx/sites-enabled
创建两个目录后,为Virtualhost创建conf文件。
由于我们的域是 example.com,因此我们将文件命名为 example.com.conf。
描述如下。
服务器 { 监听 80; 位置 / { root/var/www/vhosts/example.com/public_html 索引 index.html } }
写完后,用 :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; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; 事件{worker_connections 1024; } http { include /etc/nginx/mime.types;八位字节流; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access.log main; #tcp_nopush on; #gzip on; include /etc/nginx/conf.d/*.conf;
现在设置完成了,让我们进行语法检查。
nginx-t
如果现在看到语法正常并且配置文件成功,则可以确认没有问题。最后重启nginx使设置生效。
sudo systemctl 重新启动 nginx
并且不要忘记编辑主机文件。
任何 IP 地址 example.com
将其添加到主机文件并保存。
*除非以管理员权限执行,否则设置不会被反映。因此,以管理员权限运行记事本或类似程序,然后打开主机文件。
现在,当您在浏览器中搜索http://example.com时,如果显示您在设置过程中输入的信息,则表示设置已完成。
现在您已经配置了虚拟主机,最后一步是配置基本身份验证。
让我们对配置的虚拟主机应用基本身份验证
使用Apache时,没有问题,因为也安装了ht系统。但是,对于nginx,没有安装基于ht的工具,因此无法使用htpasswd命令。那么,让我们从安装开始。
sudo yum 安装 httpd-tools
安装完成后,使用 htpasswd 命令准备基本身份验证。
htpasswd -c /var/www/vhosts/example.com/.htpasswd 用户名
注册您选择的用户名和密码。
为了确保万无一失,请检查您的用户名和密码是否正确创建。
猫 /var/www/vhosts/example.com/.htpasswd
如果显示配置的用户名和哈希值,则说明设置成功。
最后,要应用基本身份验证,请将 auth_basic 和 auth_basic_user_file 添加到 example.com.conf。
服务器 { 监听 80; 位置 / { root /var/www/vhosts/example.com/public_html index.php; auth_basic_nginx_test; .htpasswd; } }
写完这个描述后,重启nginx。如果启用基本身份验证,则需要用户名和密码。
这样就完成了nginx的基本认证设置。