如何在 Ubuntu 18.04 上安装 Nginx

0 股票
0
0
0
0

介绍

Nginx是全球最流行的Web服务器之一,托管着互联网上一些规模最大、访问量最高的网站。在大多数情况下,它比Apache更节省资源,既可以用作Web服务器,也可以用作反向代理。.

在本指南中,您将学习如何在 Ubuntu 18.04 服务器上安装 Nginx,以及重要的 Nginx 文件和目录。.

先决条件

在开始本指南之前,您需要在服务器上配置一个具有 sudo 权限的普通用户(非 root 用户)和一个基本的防火墙。您可以参考我们的 Ubuntu 18.04 服务器基本设置指南,了解如何配置普通用户帐户。.

注册账号后,以非root用户身份登录即可开始使用。.

步骤 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 Full:此配置文件同时打开端口 80(普通、未加密的 Web 流量)和端口 443(TLS/SSL 加密流量)。.
  • Nginx HTTP:此配置文件仅开放端口 80(普通、未加密的 Web 流量)
  • Nginx HTTPS:此配置文件仅开放端口 443(TLS/SSL 加密流量)

建议您启用限制最严格的配置文件,但仍需允许您配置的流量。由于本指南中尚未为您的服务器配置 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)

现在您已经添加了相应的防火墙规则,可以检查您的 Web 服务器是否正在运行并能正常提供内容。.

步骤 3 – 检查您的 Web 服务器

安装过程结束后,Ubuntu 18.04 将启动 Nginx。Web 服务器应该已经启动。.

检查 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: en
Active: active (running) since Fri 2021-10-01 21:36:15 UTC; 35s ago
Docs: man:nginx(8)
Main PID: 9039 (nginx)
Tasks: 2 (limit: 1151)
CGroup: /system.slice/nginx.service
├─9039 nginx: master process /usr/sbin/nginx -g daemon on; master_pro
└─9041 nginx: worker process

此输出表明服务已成功启动。但是,最佳测试方法是实际向 Nginx 请求一个页面。.

您可以通过访问服务器的 IP 地址来查看 Nginx 的默认登录页面,以验证软件是否正常运行。如果您不知道服务器的 IP 地址,可以通过几种不同的方式获取。.

请尝试在服务器命令行中输入以下命令:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

你会看到几行代码。你可以逐一在浏览器中尝试,看看它们是否有效。.

另一种方法是运行以下命令,该命令会创建您的公共 IP 地址,以便从互联网上的其他位置识别该地址:

curl -4 icanhazip.com

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

http://your_server_ip

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

此页面随 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

现在服务器启动时,Nginx 应该会自动重启。.

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

使用 Nginx Web 服务器时,可以使用服务器块(类似于 Apache 中的虚拟主机)来封装配置详情,并从单个服务器托管多个域名。我们将设置一个名为 your_domain 的域名,但您应该将其替换为您自己的域名。有关使用 DigitalOcean 设置域名的更多信息,请参阅我们的 DigitalOcean DNS 简介。.

Ubuntu 18.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 页面:

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>

完成后保存并关闭文件。如果您使用的是 nano 编辑器,可以按 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.com 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:响应对 your_domain 和 www.your_domain 的请求。.
  • 默认值:响应端口 80 上任何不与其他两个块匹配的请求。.

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

sudo nano /etc/nginx/nginx.conf

找到 server_names_hash_bucket_size 命令,删除 # 符号以取消注释该行:

...
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/:用于存储每个站点的服务器块的目录。除非链接到 sites-enabled 目录,否则 Nginx 不会使用此目录中的配置文件。通常,所有服务器块配置都在此目录中完成,然后通过链接到另一个目录来启用。.
  • /etc/nginx/sites-enabled/:此目录存储为每个站点启用的服务器块。通常,这些目录是通过链接到现有站点目录中的配置文件创建的。.
  • /etc/nginx/snippets:此目录包含可包含在 Nginx 配置其他位置的配置片段。可能需要重复使用的配置部分非常适合重新转换为代码片段。.
服务器报告
  • /var/log/nginx/access.log:除非 Nginx 另有配置,否则发送到 Web 服务器的每个请求都会记录在此日志文件中。.
  • /var/log/nginx/error.log:所有 Nginx 错误都会记录在此日志文件中。.

结果

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

发表回复

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

您可能也喜欢