如何在 Ubuntu 20.04 上设置 Nginx 服务器块(虚拟主机)
有时,您可能需要在 Nginx 网络服务器上托管多个域或网站。为此,需要配置服务器块(虚拟主机)来封装所有域的配置。 Nginx 服务器块与 Apache 虚拟主机文件同义,并具有相同的用途。
本主题演示如何在 Ubuntu 20.04 上设置 Nginx 服务器块。
先决条件:
- 在您的域名托管提供商上定义的
A
记录。A
记录是将域名指向公共服务器 IP 地址的 DNS 记录。在本指南中,我们将使用域名crazytechgeek.info
进行说明。 - 安装在 Ubuntu 20.04 LTS 实例上的 Nginx 服务器或 LEMP Stack。
- 具有 Sudo 权限的登录用户。
满足所有要求后,让我们探讨如何在 Ubuntu 中设置 Nginx 服务器块。
第1步:创建Nginx文档根目录
首先,我们将为域创建一个单独的目录,其中包含与域相关的所有设置。
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
正确配置目录权限和所有权后,我们需要为该域创建一个示例网页。
第 2 步:为域创建示例页面
在此步骤中,我们将创建一个 index.html
文件用于测试目的。当在浏览器上调用域时,此文件将提供将在 Web 浏览器上显示的内容。
sudo vim /var/www/crazytechgeek.info/html/index.html
粘贴以下 HTML 内容。
<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Bravo! Your server block is working as expected!</h1>
</body>
</html>
保存并退出配置文件。
第 3 步:在 Ubuntu 中创建 Nginx 服务器块
Nginx 服务器块位于 /etc/nginx/sites-available
目录中。默认的 Nginx 服务器块是 /etc/nginx/sites-available/default
,它提供默认的 HTML 文件 /var/www/html/index.nginx-debian.html 。
对于我们的例子,我们需要创建一个服务器块来提供我们之前创建的 index.html
文件中的内容。
因此,创建所示的服务器块文件。
sudo vim /etc/nginx/sites-available/crazytechgeek.info
粘贴以下内容:
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;
}
保存并退出文件。
步骤 4:在 Ubuntu 中启用 Nginx 服务器块
要启用 Nginx 服务器块,您需要将其符号链接到 /etc/nginx/sites-enabled/
目录,如图所示。
sudo ln -s /etc/nginx/sites-available/crazytechgeek.info /etc/nginx/sites-enabled/
至此,我们已经基本完成了。然而,谨慎的做法是确认所有配置均按顺序进行。为此,请执行命令:
sudo nginx -t
如果您正确遵循我们的步骤,您应该会得到显示的输出:
最后,重新启动Nginx以使对配置文件所做的更改生效。
sudo systemctl restart Nginx
然后通过运行显示的命令确认 Nginx 是否正在运行:
sudo systemctl status Nginx
第 5 步:在 Ubuntu 中测试 Nginx 服务器块
要确认服务器块是否按预期工作并且正在提供 /var/www/crazytechgeek.info
目录中的内容,请打开 Web 浏览器并浏览服务器的域名:
http://domain-name
您应该获得服务器块中 HTML 文件中包含的内容,如图所示。
结论
在本指南中,我们向您展示了如何在 Ubuntu Linux 上使用单个域设置 Nginx 服务器块。您可以对不同的域重复相同的步骤,仍然获得相同的结果。我们确实希望该指南富有洞察力。