在 CentOS/RHEL 8 上设置 Nginx 服务器块(虚拟主机)
Nginx 服务器块相当于一台 Apache 虚拟主机,使您可以在服务器上托管多个域或网站。
在本文中,您将了解如何在 CentOS 8 和 RHEL 8 Linux 上设置 Nginx 服务器块(虚拟主机)。
先决条件:
- 您的域的
A
记录。简单来说,A
记录指的是一个 DNS 条目,其中域名指向服务器的公共 IP,在本例中为 Nginx Web 服务器。在本指南中,我们将使用域名crazytechgeek.info
。 - 安装在 CentOS 8 或 RHEL 8 实例上的 Nginx 服务器或 LEMP 堆栈。
- 具有 Sudo 权限的登录用户。
让我们开始吧!
第1步:创建Nginx文档根目录
您需要立即为要托管的域创建一个自定义 Web 根目录。对于我们的例子,我们将使用 mkdir -p 选项创建如图所示的目录,以创建所有必要的父目录:
sudo mkdir -p /var/www/crazytechgeek.info/html
此后使用 $USER
环境变量分配目录权限。执行此操作时,请确保您以普通用户而非 root 用户身份登录。
sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html
接下来,递归分配正确的目录权限,如下所示:
sudo chmod -R 755 /var/www/crazytechgeek.info/html
第 2 步:为域创建示例页面
接下来,我们将在自定义 Web 根目录中创建一个 index.html
文件,一旦发出请求,该文件将由域提供服务。
sudo vim /var/www/crazytechgeek.info/html/index.html
在文件内,粘贴以下示例内容。
<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Awesome! Your Nginx server block is working!</h1>
</body>
</html>
保存并退出配置文件。
步骤 3:在 CentOS 中创建 Nginx 服务器块
为了让 Nginx Web 服务器提供我们在步骤 2 中创建的 index.html
文件中的内容,我们需要使用适当的指令创建一个服务器块文件。因此,我们将在以下位置创建一个新的服务器块:
sudo vim /etc/nginx/conf.d/crazytechgeek.info.conf
接下来,粘贴下面显示的配置。
server {
listen 80;
listen [::]:80;
root /var/www/crazytechgeek.info/html;
index index.html index.htm index.nginx-debian.html;
server_name crazytechgeek.info www.crazytechgeek.info;
location / {
try_files $uri $uri/ =404;
}
access_log /var/log/nginx/crazytechgeek.info.access.log;
error_log /var/log/nginx/crazytechgeek.info.error.log;
}
完成后,保存更改并退出配置文件。要确认所有 Nginx 配置均正确无误,请执行以下命令:
sudo nginx -t
下面的输出应该确认您已经可以开始了!
最后,重新启动 Nginx Web 服务器并确认其按预期运行:
sudo systemctl restart nginx
sudo systemctl status nginx
步骤 4:在 CentOS 中测试 Nginx 服务器块
我们已经完成所有配置。剩下的唯一部分是确认我们的服务器块是否正在提供 index.html
文件中先前定义的 Web 根目录中的内容。
为此,只需打开浏览器并转到服务器的域,如下所示:
http://domain-name
正如所观察到的,我们的内容正在由服务器块提供服务,这清楚地表明一切进展顺利。
步骤 5:在 Nginx 托管的域上启用 HTTPS
您可以考虑使用 Lets Encrypt SSL 加密您的域,以添加一层保护并确保进出网络服务器的流量安全。
sudo dnf install certbot python3-certbot-nginx
sudo certbot --nginx
要确认您的域在 HTTPS 上配置正确,请在浏览器中访问 https://yourwebsite.com/
并在 URL 栏中查找锁定图标。
结论
我们已经在 CentOS 8 和 RHEL 8 上成功设置了 Nginx 服务器块。您可以使用相同的过程对多个域重复相同的操作。