如何在 Ubuntu 上安装 Nginx

0 股票
0
0
0
0

介绍

Nginx是世界上最受欢迎的Web服务器之一,它托管着互联网上一些规模最大、访问量最高的网站。它是一款轻量级服务器,既可以用作Web服务器,也可以用作反向代理。.

在本指南中,我们将讨论在 Ubuntu 20.04 服务器上安装 Nginx、设置防火墙、管理 Nginx 进程以及设置服务器块以从单个服务器托管多个域。.

先决条件
  • 在开始本指南之前,您的服务器上必须配置一个具有 sudo 权限的普通非 root 用户。.
  • 购买一台Ubuntu服务器 点击 去做。.

步骤 1 – 安装 Nginx

由于 Nginx 在 Ubuntu 的默认软件仓库中可用,因此可以使用 apt 软件包管理系统从这些软件仓库安装它。.

由于这是我们本次会话中首次接触 apt 软件包管理系统,我们将更新本地软件包目录,以便访问最新的软件包列表。之后,我们就可以安装 nginx 了:

sudo apt update
sudo apt install nginx

接受此操作后,apt 将会在您的服务器上安装 Nginx 及所有必需的依赖项。.

步骤 2 – 配置防火墙

在测试 Nginx 之前,必须配置防火墙软件以允许访问该服务。安装完成后,Nginx 会将自身注册为 ufw 的服务,从而可以轻松允许对 Nginx 的访问。.

输入以下命令,列出ufw能够处理的应用程序配置:

sudo ufw app list

您应该会收到一份应用程序配置文件列表:

Output
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH

如输出结果所示,Nginx 有三个配置文件:

  • Nginx完整版: 此配置文件同时打开端口 80(普通、未加密的 Web 流量)和端口 443(TLS/SSL 加密流量)。.
  • Nginx HTTP: 此配置文件仅开放端口 80(普通、未加密的 Web 流量)。
  • 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。Web 服务器应该已经启动。.

我们可以通过输入以下命令来完成此操作:

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 请求页面。.

您可以通过访问服务器的 IP 地址来查看 Nginx 的默认登录页面,以验证软件是否正常运行。如果您不知道服务器的 IP 地址,可以使用 icanhazip.com 工具查找,该工具会提供您的公网 IP 地址,就像您从互联网上的其他位置接收到的地址一样:

curl -4 icanhazip.com

获取服务器的IP地址后,将其输入到浏览器的地址栏中:

http://your_server_ip

您应该会看到 Nginx 的默认登录页面:

如果您看到此页面,说明您的服务器运行正常,可以进行管理。.

步骤 4 – 管理 Nginx 进程

现在您的 Web 服务器已经设置完毕,让我们来回顾一些基本的管理命令。.

要停止您的 Web 服务器,请键入:

sudo systemctl stop nginx

如果 Web 服务器停止运行,要重新启动它,请键入:

sudo systemctl start nginx

要停止并重新启动服务,请键入:

sudo systemctl restart nginx

如果您只是进行配置更改,通常可以在不断开连接的情况下重新加载 Nginx。为此,请键入:

sudo systemctl reload nginx

默认情况下,Nginx 配置为在服务器启动时自动启动。如果您不希望这样做,可以通过键入以下命令禁用此功能:

sudo systemctl disable nginx

要重新启用该服务开机启动,您可以输入:

sudo systemctl enable nginx

您现在已经掌握了基本的管理命令,可以开始配置您的网站以托管多个域名了。.

步骤 5 – 设置服务器块(推荐)

使用 Nginx Web 服务器时,可以使用服务器块(类似于 Apache 中的虚拟主机)来封装配置细节,并从单个服务器托管多个域名。我们将设置一个名为 your_domain 的域名,但您应该将其替换为您自己的域名。.

Ubuntu 20.04 中的 Nginx 默认启用了一个服务器块,该服务器块配置为提供 /var/www/html 目录之外的文档。虽然这对于单个网站来说运行良好,但如果您托管多个网站,则会变得很麻烦。与其修改 /var/www/html,不如在 /var/www 中为您的 your_domain 网站创建一个目录结构,并将 /var/www/html 保留为默认目录,以便在它与客户端请求不匹配时提供服务。其他网站

按如下方式为 your_domain 创建目录,并使用 -p 标志创建任何必要的父目录:

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

接下来,使用 $USER 环境变量指定目录的所有权:

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

如果您没有更改 umask 值(该值设置默认文件权限),则您的网站根目录权限应该是正确的。为了确保您的权限正确,并允许所有者读取、写入和执行文件,同时仅向组和其他用户授予读取和执行权限,您可以输入以下命令:

sudo chmod -R 755 /var/www/your_domain

接下来,使用 nano 或你喜欢的编辑器创建一个示例 index.html 页面:

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

在代码块内,添加以下 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 退出并保存文件,然后按 Y,再按 Enter 保存。.

为了让 Nginx 提供此内容,您需要创建一个包含正确指令的服务器块。我们不直接修改默认配置文件,而是在 /etc/nginx/sites-available/your_domain 目录下创建一个新文件:

sudo nano /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;
}
}

请注意,我们已将根配置更新到我们的新目录,并将 server_name 更新为我们的域名。.

接下来,让我们通过创建一个从该文件到 sites-enabled 目录的链接来启用该文件,Nginx 启动时将从该目录读取数据:

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

现在已启用并配置了两个服务器块,以根据 listen 和 server_name 指令响应请求(您可以在此处阅读更多有关 Nginx 如何处理这些指令的信息):

  • 你的域名: 它响应对 your_domain 和 www.your_domain 的请求。.
  • 默认: 它会响应端口 80 上任何与另外两个块不匹配的请求。.

为避免因添加额外服务器名称而可能导致的哈希桶内存问题,需要在 /etc/nginx/nginx.conf 文件中设置一个值。打开该文件:

sudo nano /etc/nginx/nginx.conf

找到 server_names_hash_bucket_size 命令,删除 # 符号以取消注释该行。如果您使用的是 nano 编辑器,可以按 CTRL + w 快速搜索文件中的单词。.

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

完成后保存并关闭文件。.

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

sudo nginx -t

如果没有问题,请重启 Nginx 以使更改生效:

sudo systemctl restart nginx

现在 Nginx 应该可以正常访问您的域名了。您可以访问 http://your_domain 进行测试,应该会看到类似这样的内容:

步骤 6 – 熟悉重要的 Nginx 文件和目录

既然您已经了解如何管理 Nginx 服务本身,您应该花几分钟时间熟悉一些重要的目录和文件。.

内容
  • /var/www/html: 实际的网页内容(默认情况下仅包含您之前看到的 Nginx 默认页面)位于 /var/www/html 目录之外。您可以通过编辑 Nginx 配置文件来更改此设置。.
服务器配置
  • /etc/nginx: Nginx 配置目录。所有 Nginx 配置文件都位于此处。.
  • /etc/nginx/nginx.conf: Nginx 主配置文件。可以通过修改此文件来更改 Nginx 全局配置。.
  • /etc/nginx/sites-available/: 此目录用于存储每个站点的服务器块。除非配置文件链接到站点启用目录,否则 Nginx 不会使用此目录中的文件。通常,所有服务器块配置都在此目录中完成,然后通过链接到另一个目录来启用它们。.
  • /etc/nginx/sites-enabled/: 每个站点的活动服务器块都存储在此目录中。通常,这些目录是通过链接到现有站点目录中的配置文件而创建的。.
  • /etc/nginx/snippets: 此目录包含可包含在 Nginx 配置其他位置的配置片段。可能重复使用的配置部分非常适合重构为片段。.
服务器报告
  • /var/log/nginx/access.log: 除非 Nginx 另有配置,否则发送到您的 Web 服务器的每个请求都会记录在此日志文件中。.
  • /var/log/nginx/error.log: 所有 Nginx 错误都会记录在此日志中。.

结果

现在您的网络服务器已经安装完毕,您可以选择多种内容类型和技术来创建更丰富的用户体验。.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

您可能也喜欢