如何在 Ubuntu 18.04 上安装 Nginx

介绍

Nginx 是世界上最受欢迎的 Web 服务器之一,负责托管互联网上一些最大的和流量最高的网站,在大多数情况下比 Apache 更为资源友好,可以用作 Web 服务器或反向代理。

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

前提条件

在您开始本指南之前,您应该有一个正常的非根用户,具有 sudo 权限和在您的服务器上配置的基本防火墙. 您可以通过遵循我们的 Ubuntu 18.04 初始服务器设置指南来学习如何配置常规用户帐户。

当你有一个帐户可用时,登录作为你的非根用户开始。

步骤1:安装 Nginx

由于Nginx在Ubuntu的默认存储库中可用,因此可以使用apt包装系统从这些存储库中安装。

由于这可能是本会中的第一个与apt包装系统的交互,请更新本地包索引,以便您可以访问最新的包装列表。

1sudo apt update
2sudo apt install nginx

接受此程序后,apt 将为您的服务器安装 Nginx 和任何所需的依赖。

第2步:调整防火墙

在测试 Nginx 之前,需要调整防火墙软件以允许访问该服务。

列出「ufw」知道如何使用的应用程序配置,键入以下内容:

1sudo ufw app list

您的输出应该是应用程序配置文件的列表:

1[secondary_label Output]
2Available applications:
3  Nginx Full
4  Nginx HTTP
5  Nginx HTTPS
6  OpenSSH

此列表显示了 Nginx 可用的三种配置文件:

  • Nginx Full :此配置文件打开两个端口 80 (正常,未加密的网络流量) 和端口 443 (TLS/SSL 加密的流量)
  • Nginx HTTP :此配置文件只打开端口 `80 (正常,未加密的网络流量)
  • Nginx HTTPS :此配置文件只打开端口 443 (TLS/SSL 加密的流量)

建议您启用最限制的配置文件,仍然允许您配置的流量. 由于您尚未为您的服务器配置SSL,在本指南中,您只需要在端口80上允许流量。

您可以通过键入以下内容来启用此功能:

1sudo ufw allow 'Nginx HTTP'

然后检查一下变化:

1sudo ufw status

您应该收到输出中允许的 HTTP 流量列表:

1[secondary_label Output]
2Status: active
3
4To Action From
5--                         ------      ----
6OpenSSH ALLOW Anywhere                  
7Nginx HTTP ALLOW Anywhere                  
8OpenSSH (v6)               ALLOW Anywhere (v6)             
9Nginx HTTP (v6)            ALLOW Anywhere (v6)

现在您已经添加了适当的防火墙规则,您可以检查您的 Web 服务器是否正在运行并能够正确地服务内容。

步骤三:检查您的Web服务器

在安装过程结束时,Ubuntu 18.04 启动了 Nginx. Web 服务器应该已经启动并运行。

检查systemd init 系统,以确保该服务正在运行:

1systemctl status nginx
 1[secondary_label Output]
 2 nginx.service - A high performance web server and a reverse proxy server
 3   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en
 4   Active: active (running) since Fri 2021-10-01 21:36:15 UTC; 35s ago
 5     Docs: man:nginx(8)
 6 Main PID: 9039 (nginx)
 7    Tasks: 2 (limit: 1151)
 8   CGroup: /system.slice/nginx.service
 9           ├─9039 nginx: master process /usr/sbin/nginx -g daemon on; master_pro
10           └─9041 nginx: worker process

这个输出显示,该服务已经成功启动,但是,测试这一点的最佳方法是实际上请求来自 Nginx 的页面。

您可以访问默认的 Nginx 定位页面,以确认软件运行正确,通过导航到您的服务器的 IP 地址. 如果您不知道您的服务器的 IP 地址,您可以通过几个不同的方式获得它。

尝试在您的服务器的命令提示中键入以下内容:

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

你会收到几行. 你可以尝试每个在你的网页浏览器,以确认他们是否工作。

另一种选择是运行以下命令,该命令应该生成您从互联网上的另一个位置识别的公共 IP 地址:

1curl -4 icanhazip.com

当您有您的服务器的IP地址时,请将其输入到您的浏览器的地址栏:

1http://your_server_ip

您应该收到默认的 Nginx 登陆页面:

Nginx default page

此页面包含了 Nginx 来验证服务器是否正确运行。

第4步:管理 Nginx 流程

现在你有你的Web服务器运行,让我们审查一些基本的管理命令。

要停止您的 Web 服务器,请输入以下内容:

1sudo systemctl stop nginx

要在停止时启动 Web 服务器,请键入以下内容:

1sudo systemctl start nginx

要停止,然后重新启动服务,键入以下内容:

1sudo systemctl restart nginx

如果您只是在进行配置更改,您可以经常重新加载 Nginx,而不会放弃连接,而不是重新启动它。

1sudo systemctl reload nginx

默认情况下, Nginx 配置为在服务器启动时自动启动. 如果这不是你想要的,你可以通过键入以下方式禁用此行为:

1sudo systemctl disable nginx

要重新启用服务在启动时启动,您可以键入以下内容:

1sudo systemctl enable nginx

Nginx 现在应该在服务器重新启动时自动启动。

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

在使用 Nginx 网页服务器时,可使用 server block(类似于 Apache 中的虚拟主机)来封装配置细节,并从单个服务器中托管多个域。

Nginx 在 Ubuntu 18.04 上有一个默认启用的服务器块,可配置为在 `/var/www/html 中的目录中服务的文档。虽然这对单个网站来说很好,但如果您托管多个网站,它可能会变得不便。

创建 your_domain 的目录如下,使用-p旗帜创建任何必要的母目录:

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

接下来,与$USER环境变量分配目录的所有权:

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

如果您尚未修改mask值,您的 Web 根的权限应该是正确的,但您可以通过键入以下信息来确保:

1sudo chmod -R 755 /var/www/your_domain

接下来,使用nano或您最喜欢的编辑器创建一个样本index.html页面:

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

内部,添加以下样本HTML:

1[label /var/www/your_domain/html/index.html]
2<html>
3    <head>
4        <title>Welcome to your_domain!</title>
5    </head>
6    <body>
7        <h1>Success! The your_domain server block is working!</h1>
8    </body>
9</html>

如果您使用了nano,您可以通过按CTRL + X然后按YENTER来退。

为了使 Nginx 能够提供此内容,需要创建一个正确的服务器块,而不是直接修改默认配置文件,请在 /etc/nginx/sites-available/your_domain 创建一个新的文件:

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

添加以下配置块,类似于默认,但更新为您的新目录和域名:

 1[label /etc/nginx/sites-available/your_domain]
 2server {
 3        listen 80;
 4        listen [::]:80;
 5
 6        root /var/www/your_domain/html;
 7        index index.html index.htm index.nginx-debian.html;
 8
 9        server_name your_domain.com www.your_domain;
10
11        location / {
12                try_files $uri $uri/ =404;
13        }
14}

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

接下来,通过从它创建一个链接到网站启用目录, Nginx 在启动过程中读取:

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

现在两个服务器块已启用并配置为基于其倾听服务器名称指令响应请求(您可以阅读有关 Nginx 如何处理这些指令的更多信息):

  • your_domain: 将响应对 your_domainwww.your_domain 的请求。
  • 默认: 将响应对不匹配其他两个区块的 `80' 端口上的任何请求。

为了避免可能导致添加额外的服务器名称的哈希库存问题,需要在 `/etc/nginx/nginx.conf 文件中调整单个值。

1sudo nano /etc/nginx/nginx.conf

查找server_names_hash_bucket_size指令,然后删除# 符号以不评论行:

1[label /etc/nginx/nginx.conf]
2...
3http {
4    ...
5    server_names_hash_bucket_size 64;
6    ...
7}
8...

保存并关闭文件,当你完成。

接下来,测试以确保您的任何 Nginx 文件中没有语法错误:

1sudo nginx -t

如果没有任何问题,请重新启动 Nginx 以启用您的更改:

1sudo systemctl restart nginx

您可以通过导航到http://your_domain,在那里您应该看到如下内容:

Nginx first server block

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

现在你知道如何管理 Nginx 服务本身,你应该花几分钟来熟悉一些重要的目录和文件。

内容

  • /var/www/html:实际的网页内容,默认情况下仅由您之前看到的默认 Nginx 页面组成,从 /var/www/html 目录中提供。

服务器配置

  • /etc/nginx: Nginx 配置目录. 所有 Nginx 配置文件都位于此处.
  • /etc/nginx/nginx.conf: 主要的 Nginx 配置文件. 这可以被修改为对 Nginx 全球配置进行更改.
  • /etc/nginx/sites-available/: 可以存储每个站点的服务器块的目录. Nginx 不会使用本目录中找到的配置文件,除非它们链接到 sites-enabled 目录。 通常,所有服务器块配置都在本目录中进行,然后通过链接到其他目录启用。
  • `etc/nginx/sites-en

服务器日志

  • /var/log/nginx/access.log:在这个日志文件中记录到您的 Web 服务器的每一个请求,除非 Nginx 已配置为另行。

结论

现在你已经安装了你的Web服务器,你有许多选择的内容类型来服务和你想要使用的技术来创建一个更丰富的体验。

如果您想构建一个更完整的应用程序堆栈,请参阅本文中的 如何在Ubuntu 18.04上配置LEMP堆栈

Published At
Categories with 技术
comments powered by Disqus