在Ubuntu 18.04上安装Nginx的方法

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

介绍

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

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

先决条件

在开始本指南之前,您应该拥有一个具有 sudo 特权的常规非 root 用户,并在服务器上配置了基本防火墙。您可以按照我们的 Ubuntu 18.04 初始服务器设置指南来了解如何配置常规用户帐户。

当您有可用的帐户时,请以非 root 用户身份登录。

步骤 1 -- 安装 Nginx

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

由于这可能是您在本会话中与 apt 软件包管理系统的首次交互,因此更新本地软件包索引,以便您可以访问最新的软件包列表。然后,您可以安装 nginx

command 复制代码
sudo apt update
sudo apt install nginx

接受该过程后,apt 将在服务器上安装 Nginx 和任何必需的依赖项。

步骤 2 -- 调整防火墙

在测试 Nginx 之前,需要调整防火墙软件以允许访问该服务。Nginx 在安装时会在 ufw 中注册自己作为一个服务,因此可以轻松地允许 Nginx 访问。

通过输入以下内容列出 ufw 知道如何使用的应用程序配置:

command 复制代码
sudo ufw app list

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

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 上的流量。

您可以通过输入以下内容来启用此配置:

command 复制代码
sudo ufw allow 'Nginx HTTP'

然后,验证更改:

command 复制代码
sudo ufw status

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

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 初始化系统来确保服务正在运行:

command 复制代码
systemctl status nginx
● 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 请求页面。

您可以访问默认的 Nginx 登陆页面,确认软件是否正常运行,方法是导航到您服务器的 IP 地址。如果您不知道服务器的 IP 地址,可以通过几种不同的方式获取。

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

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

您将收到几行。您可以尝试在 Web 浏览器中输入每个地址,以确认它们是否有效。

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

command 复制代码
curl -4 icanhazip.com

当您获得服务器的 IP 地址后,请在浏览器的地址栏中输入:

http://your_server_ip

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

!Nginx default page

此页面包含在 Nginx 中,用于验证服务器是否正常运行。

第四步 -- 管理 Nginx 进程

现在你已经启动并运行了你的 Web 服务器,让我们来看一些基本的管理命令。

要停止你的 Web 服务器,请输入以下命令:

command 复制代码
sudo systemctl stop nginx

要在停止状态下启动 Web 服务器,请输入以下命令:

command 复制代码
sudo systemctl start nginx

要停止然后再次启动服务,请输入以下命令:

command 复制代码
sudo systemctl restart nginx

如果你只是在进行配置更改,通常可以在不断开连接的情况下重新加载 Nginx 而不是重新启动它。要做到这一点,请输入以下命令:

command 复制代码
sudo systemctl reload nginx

默认情况下,Nginx 被配置为在服务器启动时自动启动。如果这不是你想要的,你可以通过输入以下命令来禁用此行为:

command 复制代码
sudo systemctl disable nginx

要重新启用服务以在启动时启动,可以输入以下命令:

command 复制代码
sudo systemctl enable nginx

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

第五步 -- 设置服务器块(推荐)

在使用 Nginx Web 服务器时,可以使用"服务器块"(类似于 Apache 中的虚拟主机)来封装配置细节,并从单个服务器上托管多个域。我们将设置一个名为 your_domain 的域,但你应该用你自己的域名替换它。要了解有关如何在 DigitalOcean 上设置域名的更多信息,请参阅我们的《DigitalOcean DNS 简介》。

在 Ubuntu 18.04 上,Nginx 默认启用了一个服务器块,配置为从 /var/www/html 目录中提供文档。虽然这对于单个站点效果很好,但如果你要托管多个站点,这可能会变得难以管理。让我们在 /var/www 中为我们的 your_domain 站点创建一个目录结构,将 /var/www/html 保留为默认目录,以便在客户端请求不匹配任何其他站点时提供服务。

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

command 复制代码
sudo mkdir -p /var/www/your_domain/html

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

command 复制代码
sudo chown -R $USER:$USER /var/www/your_domain/html

如果你没有修改 umask 值,你的 Web 根目录的权限应该是正确的,但你可以通过输入以下命令来确保:

command 复制代码
sudo chmod -R 755 /var/www/your_domain

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

command 复制代码
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 然后 YENTER 来退出。

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

command 复制代码
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;
        }
}

注意,我们已经将 root 配置更新为新目录,将 server_name 更新为域名。完成后保存并关闭文件。

接下来,通过从中创建一个链接到 sites-enabled 目录来启用文件,Nginx 在启动时会从该目录中读取:

command 复制代码
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

现在已启用两个服务器块,并配置为根据它们的 listenserver_name 指令响应请求(你可以在这里阅读更多关于 Nginx 如何处理这些指令的信息):

  • your_domain:将响应对 your_domainwww.your_domain 的请求。
  • default:将响应在端口 80 上不匹配其他两个块的任何请求。

为了避免由于添加额外的服务器名可能导致的哈希桶内存问题,有必要调整 /etc/nginx/nginx.conf 文件中的单个值。打开文件:

command 复制代码
sudo nano /etc/nginx/nginx.conf

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

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

完成后保存并关闭文件。

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

command 复制代码
sudo nginx -t

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

command 复制代码
sudo systemctl restart nginx

Nginx 现在应该正在提供你的域名。你可以通过导航到 http://your_domain 来测试,你应该会看到类似以下内容:

!Nginx first server block

第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/: 存储已启用的每个站点服务器块的目录。通常,这些是通过链接到 sites-available 目录中找到的配置文件来创建的。
  • /etc/nginx/snippets: 此目录包含可以在 Nginx 配置的其他位置包含的配置片段。可以重构为片段的可重复配置段是很好的候选项。

服务器日志

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

结论

现在你已经安装了你的网页服务器,你有很多选择可以用来提供内容以及你想要使用的技术来创建更丰富的体验。

如果你想构建一个更完整的应用程序堆栈,请查看这篇文章,了解如何在 Ubuntu 18.04 上配置 LEMP 堆栈。

相关推荐
远游客07131 小时前
centos stream 8下载安装遇到的坑
linux·服务器·centos
马甲是掉不了一点的<.<1 小时前
本地电脑使用命令行上传文件至远程服务器
linux·scp·cmd·远程文件上传
jingyu飞鸟1 小时前
centos-stream9系统安装docker
linux·docker·centos
努力--坚持1 小时前
电商项目-网站首页高可用(一)
nginx·lua·openresty
超爱吃士力架1 小时前
邀请逻辑
java·linux·后端
White_Mountain2 小时前
在Ubuntu中配置mysql,并允许外部访问数据库
数据库·mysql·ubuntu
cominglately4 小时前
centos单机部署seata
linux·运维·centos
魏 无羡4 小时前
linux CentOS系统上卸载docker
linux·kubernetes·centos
coder_pig4 小时前
📝小记:Ubuntu 部署 Jenkins 打包 Flutter APK
flutter·ubuntu·jenkins
CircleMouse4 小时前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos