网站搜索

如何在 Ubuntu 20.04 上安装 Nginx Web 服务器


Nginx 是一款开源、高性能的 Web 服务器,在生产环境中占据着巨大的市场份额。它是一个轻量级且强大的 Web 服务器,主要用于托管高流量网站。

相关阅读:如何在 Ubuntu 20.04 上安装 Apache Web 服务器

在本指南中,您将了解如何在 Ubuntu 20.04 LTS 上安装 Nginx Web 服务器并配置 Nginx 服务器块(虚拟主机)。

先决条件

首先,请确保您拥有具有 SSH 访问权限的 Ubuntu 20.04 LTS 实例以及具有 root 权限的 Sudo 用户。此外,建议使用稳定的互联网连接来安装 Nginx 软件包。

在 Ubuntu 20.04 上安装 Nginx

1.在安装Nginx之前,请更新服务器的软件包列表。

sudo apt update

2.然后通过运行以下命令安装Nginx

sudo apt install nginx

当提示继续时,按键盘上的'Y',然后按ENTER。安装将在几秒钟内完成。

3.成功安装Nginx后,您可以通过运行以下命令来启动并验证它:

sudo systemctl start nginx
sudo systemctl status nginx

上面的输出清楚地表明 Nginx 正在运行。

4. 要检查 Nginx 的版本,请运行:

sudo dpkg -l nginx

输出表明我们正在运行 Nginx 1.17.10,这是撰写本文时的最新版本。

在 UFW 防火墙上打开 Nginx 端口

现在您已经安装了 Nginx 并按预期运行,需要进行一些调整才能通过网络浏览器访问 Nginx。如果您正在运行 UFW 防火墙,则需要允许 Nginx 应用程序配置文件。

有 3 个与 ufw 防火墙关联的 Nginx 配置文件。

  1. Nginx Full – 这会打开端口 80443(用于 SSL/TLS 加密)。
  2. Nginx HTTP – 此仅开放端口80(用于未加密的网络流量)。
  3. Nginx HTTPS – 仅打开端口443(用于 SSL/TLS 加密)。

5.首先在Ubuntu 20.04上启用防火墙。


sudo ufw enable

6. 目前,由于我们不在加密服务器上,因此我们将仅允许 Nginx HTTP 配置文件允许端口 80 上的流量。

sudo ufw allow 'Nginx HTTP'

7. 然后重新加载防火墙以使更改得以保留。

sudo ufw reload

8. 现在检查防火墙的状态以验证已允许的配置文件。

sudo ufw status

在 Ubuntu 20.04 上测试 Nginx

Nginx 在浏览器上运行,就像您对任何 Web 服务器所期望的那样,测试它是否按预期运行的最可靠方法是通过浏览器发送请求。

9. 因此,请打开浏览器并浏览服务器的 IP 地址或域名。要检查服务器的 IP,请运行 ifconfig 命令:

ifconfig

10.如果您在云服务器上,请运行下面的curl命令来检索服务器的公共IP。

curl ifconfig.me

11. 在浏览器的 URL 字段中,输入服务器的 IP 地址或域名,然后按ENTER

http://server-IP or domain-name

您应该会看到默认的 Nginx 欢迎页面,如图所示。

在 Ubuntu 20.04 中管理 Nginx 进程

12. 要停止 Nginx Web 服务器,只需运行:

sudo systemctl stop nginx

13. 要再次启动网络服务器,请执行:

sudo systemctl start nginx

14. 要在启动或重新引导时自动启动 Nginx,请运行:

sudo systemctl enable nginx

15. 如果您想重新启动网络服务器,尤其是在更改配置文件后,请运行:

sudo systemctl restart nginx

16. 或者,您可以重新加载以避免断开连接,如图所示。

sudo systemctl reload nginx

在 Ubuntu 20.04 中配置 Nginx 服务器块

如果您计划在服务器上托管多个站点,那么强烈建议您设置一个 Nginx 服务器块。服务器块相当于 Apache 的虚拟主机。

默认情况下,Nginx 附带其默认服务器块,该服务器块设置为在 /var/www/html 路径处提供 Web 内容。

我们将创建一个单独的 Nginx 块来服务我们域的内容。在本指南中,我们将使用域 crazytechgeek.info
对于您的情况,请确保将其替换为您自己的域名。

17. 要创建服务器块文件,首先,为您的域创建一个目录,如图所示。

sudo mkdir -p /var/www/crazytechgeek.info/html

18. 接下来,使用 $USER 变量将所有权分配给新目录。

sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html

19. 确保您还相应地分配目录权限,允许所有者拥有所有权限(读、写和执行),并授予其他方仅读和执行权限。

sudo chmod -R 755 /var/www/crazytechgeek.info

20. 在域目录中,创建一个 index.html 文件,其中将包含该域的 Web 内容。

sudo vim /var/www/crazytechgeek.info/html/index.html

将以下内容粘贴到示例测试文件中。

<html>
    <head>
        <title>Welcome to your_domain!</title>
    </head>
    <body>
        <h1>Bravo! Your server block is working as expected!</h1>
    </body>
</html>

保存更改并退出文件。

21.为了让 Nginx 网络服务器提供您刚刚添加的内容,您需要使用适当的指令创建一个服务器块。在本例中,我们在以下位置创建了一个新的服务器块:

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;
        }
}

保存并退出。

22. 现在,通过将服务器块文件链接到 sites-enabled 目录来启用服务器块文件,Nginx 服务器在启动时从中读取该目录。

sudo ln -s /etc/nginx/sites-available/crazytechgeek.info /etc/nginx/sites-enabled/

23.要使更改生效,请重新启动Nginx网络服务器。

sudo systemctl restart nginx

24. 为了确保所有配置都按顺序进行,请运行以下命令:

nginx -t

如果所有配置均按顺序进行,您应该得到如下所示的输出:

25. Nginx Web 服务器现在应该可以提供您域的内容。再次打开浏览器并浏览服务器的域。

http://domain-name

您域目录中的自定义内容将如图所示提供。

重要的 Nginx 配置文件

在结束之前,我们必须检查一些与 Nginx 相关的重要配置文件。

Nginx 配置文件

  • /etc/nginx/nginx.conf:这是主要的配置文件。您可以修改设置以满足服务器的要求。
  • /etc/nginx/sites-available:这是存储服务器块配置的目录。 Nginx 仅在链接到启用站点的目录时才使用服务器块。
  • /etc/nginx/sites-enabled:该目录包含已启用的每个站点 Nginx 服务器块。

Nginx 日志文件

您可以使用两个主要日志文件对 Nginx Web 服务器进行故障排除:

  • /var/log/nginx/access.log:这会记录向网络服务器发出的所有请求。
  • /var/log/nginx/error.log:这是错误日志文件,它记录了Nginx遇到的所有错误。
结论

我们已经完成了本教程。我们已经展示了如何在 Ubuntu 20.04 上安装 Nginx 以及如何设置 Nginx 服务器块来为您的域内容提供服务。欢迎您提供反馈。