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

Nginx 是一个开源 Web 服务器,擅长负载平衡、缓存和充当反向代理。NGINX 考虑了高效率和高并发性,旨在解决其他 Web 服务器的可扩展性和性能问题。它的事件驱动架构使其成为高可用性的 Web 服务器之一。

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

本文我们将介绍如何在 Ubuntu 20.04 LTS 上安装 Nginx 服务器和配置 Nginx 服务器块(虚拟主机)。

第 1 步 – 安装 Nginx

Nginx 在 Ubuntu 的默认存储库中可用,因此可以直接使用 apt安装它。

我们首先更新本地安装包索引,以便可以获取最新的安装包清单。之后,执行命令安装nginx

sudo apt update
sudo apt install nginx

apt将安装 Nginx 和所需的依赖项到服务器。

第 2 步 – 调整防火墙

在测试 Nginx 之前,需要调整防火墙软件以允许访问 Web 服务。Nginx 在安装时将自身注册为ufw服务,从而可以直接允许 Nginx 访问。

通过键入以下命令,列出 Nginx 的应用程序配置:

sudo ufw app list

应该会获得如下应用程序配置文件的列表:

Output
Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

如输出所示,Nginx 有三个可用的配置文件:

  • Nginx Full:此配置文件同时打开端口 80(正常、未加密的 Web 流量)和端口 443(TLS/SSL 加密流量)
  • Nginx HTTP:此配置文件仅打开端口 80(正常、未加密的网络流量)
  • Nginx HTTPS:此配置文件仅打开端口 443(TLS/SSL 加密流量)

通过执行以下命令启用 80 端口流量:

sudo ufw allow 'Nginx HTTP'

可以通过执行下面的命令来验证:

sudo ufw status

输出内容将显示允许了哪些 HTTP 流量:

Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

第 3 步 – 检查 Web 服务器

在安装过程结束后,Ubuntu 20.04 系统会启动 Nginx。通过执行以下命令,检查 systemd init 系统以确保服务正在运行:

systemctl status nginx
Output
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2020-04-20 16:08:19 UTC; 3 days ago
     Docs: man:nginx(8)
 Main PID: 2369 (nginx)
    Tasks: 2 (limit: 1153)
   Memory: 3.5M
   CGroup: /system.slice/nginx.service
           ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─2380 nginx: worker process

可以看到 Nginx 服务已成功启动。然而,最好通过实际访问页面,来验证 Nginx 正常提供服务。

可以访问默认的 Nginx 登录页面进行验证。通过导浏览器访问服务器的 IP 地址,来确认 Nginx 是否正常运行。如果您不知道服务器的 IP 地址,可以使用icanhazip.com工具查看,该工具将为您查询服务器的公共 IP 地址:

curl -4 icanhazip.com

获得服务器的 IP 地址后,输入浏览器的地址栏中进行访问:

http://your_server_ip

应该会收到如下的 Nginx 页面:

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

如果成功打开了该页面,则表明服务器运行正常。

第 4 步 – 管理 Nginx 进程

在成功启动并运行了 Nginx Web 服务器后,让我们了解一些基本的管理命令。

要停止 Nginx Web 服务器,请执行下面的命令:

sudo systemctl stop nginx

要在 Web 服务器停止时启动它,请执行下面的命令:

sudo systemctl start nginx

要重新启动 Nginx 服务,请执行下面的命令:

sudo systemctl restart nginx

如果对 Nginx 的配置文件做了更改,只要重新加载 Nginx 即可,这样不会断开 Web 连接。为此,请执行下面的命令:

sudo systemctl reload nginx

默认情况下,Nginx 被配置为在服务器启动时自动启动。如果您不想这样,可以通过执行下面的命令来禁用 Nginx 自动启动:

sudo systemctl disable nginx

要开启 Nginx 在系统重新启动时自动启动,可以执行下面的命令:

sudo systemctl enable nginx

在了解了 Nginx 的基本管理命令后,我们来介绍如何配置 Nginx 虚拟主机。

使用 Nginx Web 服务器时,服务器块(类似于 Apache 中的虚拟主机)可用于配置单个服务器托管多个网站。

Ubuntu 20.04 上的 Nginx 默认启用了一个服务器块,配置/var/www/html为网站根目录。如果服务器上只有单个站点,使用默认服务器块时可以的,但如果您想托管多个网站,这样就不那么方便了。下面,我们在/var/www/下,为 your_domain 创建一个单独的根目录。

your_domain 创建根目录,使用-p标志创建所需的父目录:

sudo mkdir -p /var/www/your_domain/html

接下来,授予 $USER 用户目录的所有权:

sudo chown -R $USER:$USER /var/www/your_domain/html

如果您没有修改umask设置默认文件权限的值,则 Web 根目录的权限应该是正确的。为确保权限正确,要允许所有者读取、写入和执行文件,而只授予组和其他人读取和执行权限,请执行以下命令:

sudo chmod -R 755 /var/www/your_domain

接下来,使用编辑器创建示例index.html页面:

sudo nano /var/www/your_domain/html/index.html

在里面,添加以下示例 HTML:

/var/www/your_domain/html/index.html

<html>
    <head>
        <title>Welcome to your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain server block is working!</h1>
    </body>
</html>

Ctrl+X保存并关闭文件,然后分别按YEnter

为了让 Nginx 显示此页面内容,需要创建一个服务器块。在 /etc/nginx/sites-available/your_domain 目录下,创建一个新的服务器配置块:

sudo nano /etc/nginx/sites-available/your_domain

在配置块中粘贴下面的配置代码:

/etc/nginx/sites-available/your_domain

server {
        listen 80;
        listen [::]:80;

        root /var/www/your_domain/html;
        index index.html index.htm index.nginx-debian.html;

        server_name your_domain www.your_domain;

        location / {
                try_files $uri $uri/ =404;
        }
}

请注意,要将root配置的目录和server_name对应的域名更正为自己的。

接下来,我们通过创建一个指向 sites-enabled 目录的链接来启用该配置文件,Nginx 在启动期间会读取该目录:

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

注意: Nginx 使用一种被称为符号链接做法来跟踪启用的服务器块。创建符号链接就像在硬盘上创建一个快捷方式。

现在启用并配置了两个服务器块,以根据它们的listen和指令响应请求:

  • your_domain: 将响应对 your_domain 和 www.your_domain 的请求。
  • default:将响应 80 端口上与其他两个块不匹配的请求。

为避免添加其他服务器名称可能导致的哈希桶内存问题,还要调整/etc/nginx/nginx.conf配置文件:

sudo nano /etc/nginx/nginx.conf

找到server_names_hash_bucket_size指令并删除前面#号以取消注释该行。

/etc/nginx/nginx.conf

...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

完成后保存并关闭文件。

接下来,测试所有 Nginx 文件中都没有语法错误:

sudo nginx -t

如果没有任何问题,重新启动 Nginx 以使更改生效:

sudo systemctl restart nginx

如果这时通过浏览器访问域名,应该会看到类似下面的内容。

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

第 6 步 – 熟悉 Nginx 配置文件和目录

在了解了如何管理 Nginx 服务后,我们再花几分钟时间熟悉一些重要的目录和文件。

网站目录

  • /var/www/html:常用为网站的根目录,通常在服务器配置块中进行设置。

服务器配置

  • /etc/nginx: Nginx 配置目录。所有 Nginx 配置文件都存放在此处。
  • /etc/nginx/nginx.conf: 主要的 Nginx 配置文件。可以对其进行修改以更改 Nginx 全局配置。
  • /etc/nginx/sites-available/:存储每个站点服务器块的目录。Nginx 不会使用在该目录中找到的配置文件,除非它们已经被链接到sites-enabled目录。通常,所有服务器块配置都在此目录中完成,然后通过链接到 sites-enabled目录来启用。
  • /etc/nginx/sites-enabled/:存储已经启用的站点服务器块的目录。通常是通过链接到sites-available目录中的配置文件来创建的。
  • /etc/nginx/snippets:此目录保存可以包含在 Nginx 配置中的配置片段。

服务器日志

  • /var/log/nginx/access.log:对 Web 服务器的每个请求,都会记录在此日志文件中,除非 Nginx 配置不允许这样做。
  • /var/log/nginx/error.log: 任何 Nginx 错误都会记录在这个日志中。

总结

综上,牛奇网为您介绍了如何在 Ubuntu 20.04 上安装 Nginx Web 服务器。

作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/linux/how-to-install-nginx-on-ubuntu-20-04/

(0)
上一篇 1天前
下一篇 6小时前

相关推荐

发表评论

登录后才能评论