网站搜索

在 CentOS/RHEL 8 上设置 Nginx 服务器块(虚拟主机)


Nginx 服务器块相当于一台 Apache 虚拟主机,使您可以在服务器上托管多个域或网站。

在本文中,您将了解如何在 CentOS 8RHEL 8 Linux 上设置 Nginx 服务器块(虚拟主机)。

先决条件:

  • 您的域的 A 记录。简单来说,A 记录指的是一个 DNS 条目,其中域名指向服务器的公共 IP,在本例中为 Nginx Web 服务器。在本指南中,我们将使用域名 crazytechgeek.info
  • 安装在 CentOS 8RHEL 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 8RHEL 8 上成功设置了 Nginx 服务器块。您可以使用相同的过程对多个域重复相同的操作。