如何在 Debian 11 上安装 Nginx

介绍

Nginx是一个免费和开源的Web服务器,用于托管各种尺寸的网站和应用程序,该软件以其对内存资源的低影响,高可扩展性以及其模块化,事件驱动的架构而闻名,可以提供安全、可预测的性能。

在本指南中,您将在 Debian 11 服务器上安装 Nginx,调整防火墙设置,并学习如何管理某些 Nginx 流程。

前提条件

在您开始本指南之前,您应该有一个正常的非根用户,在您的服务器上配置了 sudo 权限. 您也应该有一个活跃的防火墙. 您可以通过遵循我们的 Debian 11 初始服务器设置指南来学习如何设置此设置。

如果您想完成本教程的最后步骤,您将需要注册域名. 有关使用 DigitalOcean 设置域名的更多信息,请参阅我们的 DigitalOcean DNS 介绍

步骤1:安装 Nginx

Nginx 可在 Debian 的默认软件存储库中使用,可以从传统的包管理工具中安装。

首先更新本地包索引以反映最新的上游变化:

1sudo apt update

然后,安装nginx包:

1sudo apt install nginx

确认安装,输入Y,然后按Enter来继续。apt将然后在您的服务器上安装 Nginx 和任何所需的依赖。

第2步:调整防火墙

在测试 Nginx 之前,需要修改防火墙设置以允许外部访问默认 Web 端口,假设您遵循前提中的指示,您应该有一个 UFW 防火墙配置来限制访问您的服务器。

在安装过程中, Nginx 会与 UFW 注册,以提供几个应用程序配置文件,可以用来通过防火墙启用或禁用对 Nginx 的访问。

列出ufw应用程序配置文件,键入:

1sudo ufw app list

您应该获得应用程序配置文件的列表:

1[secondary_label Output]
2Available applications:
3...
4  Nginx Full
5  Nginx HTTP
6  Nginx HTTPs
7  OpenSSH
8

从输出来看,对 Nginx 有三个配置文件:

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

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

你可以通过键入来实现这一点:

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服务器

在安裝過程結束時,Debian 11 會啟動 Nginx. 網頁伺服器應該已經啟動並運行。

您可以通过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: enabled)
 4     Active: active (running) since Tue 2022-07-12 20:59:20 UTC; 17h ago
 5       Docs: man:nginx(8)
 6   Main PID: 2887 (nginx)
 7      Tasks: 2 (limit: 1132)
 8     Memory: 4.2M
 9        CPU: 81ms
10     CGroup: /system.slice/nginx.service
11             ├─2887 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
12             └─2890 nginx: worker process

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

您可以访问默认的 Nginx 定位页面,通过导航到您的服务器的 IP 地址来确认软件是否正常运行. 如果您不知道您的服务器的 IP 地址,您可以在您的服务器的命令提示中输入此信息:

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

你会得到回来的几行. 你可以尝试每个在你的网页浏览器,看看他们是否工作。

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

1http://your_server_ip

默认的 Nginx 定位页面应该出现在您的 Web 浏览器中:

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

步骤 5 – 设置服务器封锁(可选)

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

在 Debian 11 上, Nginx 有一个默认启用的服务器块,可配置为在 `/var/www/html 中的目录中提供文档。虽然这对单个网站非常有效,但如果您托管多个网站,它可能会变得无法管理。

-p旗创建your_domain目录,以以下方式创建任何必要的母目录:

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! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
 8<p>This is a sample page.</p>
 9    </body>
10</html>

nano中,您可以通过按CTRL + X,然后按Y,然后按ENTER

为了使 Nginx 能够提供此内容,您必须创建一个服务器块,其中有正确的指示指向您的自定义 Web 根,而不是直接修改默认配置文件,请在 /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 www.your_domain;
10
11        location / {
12                try_files $uri $uri/ =404;
13        }
14}

请注意更新root配置到你的新目录和server_name到你的域名. 记得在这里用你的实际域名取代your_domain

接下来,通过在网站启用目录中创建您自定义配置文件的象征链接来启用此服务器封锁, 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

如果没有任何问题,以下是输出:

1[secondary_label Output]
2nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
3nginx: configuration file /etc/nginx/nginx.conf test is successful

通过配置测试后,重新启动 Nginx 以启用您的更改:

1sudo systemctl restart nginx

您可以通过导航到http://your_domain``来测试此功能。您在/var/www/your_domain/html/index.html`文件夹中创建的自定义HTML应该在这里进行渲染:

Nginx 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 服务器,您有许多选择,您可以提供的内容类型以及您可以使用的技术来为用户创造更丰富的体验。

Published At
Categories with 技术
Tagged with
comments powered by Disqus