如何在 Debian 12、11 或 10 上安装 Nginx

Nginx 是一款功能强大的 Web 服务器,以高性能和低资源消耗而闻名。它最初设计用于处理 C10k 问题,擅长提供静态内容、负载平衡和反向代理。将 Nginx 与以稳定性和安全性著称的 Debian 相结合,可打造出强大而可靠的服务器环境。

Nginx 的主要特点:

  • 高性能: 有效地处理多个并发连接。
  • 资源使用率低: 经过优化,可使用最少的内存和 CPU 运行。
  • 负载均衡: 在多台服务器之间分配流量以提高性能。
  • 反向代理: 将客户端请求无缝转发到后端服务器。
  • 静态内容处理: 快速高效地提供静态文件。
  • 安全功能: 支持 SSL/TLS 加密通信。
  • 灵活性: 支持 HTTP、HTTPS、SMTP、POP3 和 IMAP 等协议。

将 Nginx 与 Debian 结合起来的好处:

  • 稳定: Debian 的稳定性声誉确保您的服务器保持可靠。
  • 安全: Debian 强大的安全措施可保护您的 Nginx 服务器免受漏洞侵害。
  • 使用方便: Debian 的包管理系统简化了 Nginx 的安装和维护。
  • 社区支持: Nginx 和 Debian 拥有强大的社区,提供广泛的资源和支持。

进入设置阶段后,您会发现 Debian 的稳定性与 Nginx 的效率完美结合,为您的 Web 应用程序创建了一个理想的环境。让我们深入了解在 Debian 服务器上安装和配置 Nginx 所需的步骤。

在安装 Nginx 之前准备系统

在安装 Nginx 之前,请确保您的系统已更新。这可以防止安装过程中发生潜在冲突,并降低兼容性问题和安全漏洞的风险。

要更新系统包,请运行以下命令:

sudo apt update && sudo apt upgrade

此命令获取可用更新列表(通过 apt update),然后将当前软件包升级到最新版本(使用 apt upgrade).

安装 NGINX' Web Server' 标准

默认情况下,NGINX 在 Debian 存储库中可用。这使得安装过程变得简单。

运行以下命令安装 nginx:

sudo apt install nginx

apt install 命令告诉 APT 包处理实用程序(Debian 系统的一部分)安装 NGINX 包。

可选:安装 NGINX 完整版

NGINX 提供了 nginx-full 具有标准版本中没有的附加模块的版本。如果您需要更多功能,请安装 nginx-full 版本:

sudo apt install nginx-full

可选:安装 NGINX-Extras 版本

如需更广泛的功能集,请考虑 nginx-extras 版本。要安装:

sudo apt install nginx-extras

验证 NGINX 安装

安装后,确保NGINX正常运行。

使用以下命令检查 NGINX 服务状态:

systemctl status nginx

如果输出显示“active (running)”,则 NGINX 运行正常。如果不是,则输出将详细说明错误以便进行故障排除。

如果未启用 NGINX,请使用:

sudo systemctl enable nginx --now

为 Nginx 配置 UFW 防火墙

UFW,即 Uncomplicated Firewall,提供了一个易于使用的界面来管理 iptables 防火墙规则。默认情况下,Debian 不会安装它,但您可以从默认存储库中获取它。如果您的服务器具有公共访问权限,则应设置 UFW 规则以确保安全。

安装UFW防火墙

如果您的系统上尚未安装 UFW,您可以通过执行以下命令进行安装:

sudo apt install ufw

启用UFW防火墙

安装完成后,您可以通过运行以下命令启用 UFW:

sudo ufw enable

UFW 的默认设置会阻止所有传入连接并允许所有传出连接。这意味着它会阻止未经请求的系统访问,但允许您的系统与外界联系。

列出已安装的应用程序

UFW 使用应用程序配置文件,即针对特定应用程序的规则集。要查看具有 UFW 配置文件的已安装应用程序,请运行:

sudo ufw app list

为 NGINX 配置 UFW 规则

根据您的需要,您可以配置 UFW 以让 NGINX 连接通过 HTTP(端口 80)、HTTPS(端口 443)或两者。

仅适用于 HTTP(端口 80):

sudo ufw allow 'Nginx HTTP'

仅限 HTTPS(端口 443):

sudo ufw allow 'Nginx HTTPS'

HTTP 和 HTTPS:

sudo ufw allow 'Nginx Full'

验证防火墙规则

要确认您的规则已到位,请检查活动的防火墙规则:

sudo ufw status

测试 NGINX 配置

设置 UFW 后,确保您可以看到 NGINX 登录页面。在浏览器中,转到服务器的 IP 地址:

http://your_server_ip

或者,对于本地设置:

http://localhost

假设您看到了 NGINX 默认页面;您的配置成功了。这结束了 Debian 上 NGINX 的防火墙设置。

创建 NGINX 服务器块

与 Apache 的虚拟主机一样,NGINX 服务器块可让您从一台服务器托管多个域。每个域都有其配置设置。在本指南中,请将“example.com”替换为您的实际域名。

为您的域名创建目录

为您的域名设置一个目录。此目录将存储您的网站的文件:

sudo mkdir -p /var/www/example.com/

为 Nginx 目录分配所有权

将目录所有权分配给“www-data”用户和组,NGINX 通常使用:

sudo chown -R www-data:www-data /var/www/example.com/

创建 Nginx 测试 HTML 页面

在您的域目录中创建一个测试 HTML 页面来确认您的 NGINX 设置:

sudo nano /var/www/example.com/index.html

添加以下 HTML 代码:

<html>
 <head>
  <title>Welcome to Example.com</title>
 </head>
 <body>
   <h1>Success! The NGINX server block is working!</h1>
 </body>
</html>

将代码粘贴到 nano 编辑器后,按 CTRL+O 保存更改,然后按 CTRL+X 退出编辑器。

为测试页面创建 NGINX 服务器块

为您的网站设置服务器块:

sudo nano /etc/nginx/sites-available/example.com.conf

添加以下配置:

server {
 listen 80;
 listen [::]:80;

 root /var/www/example.com/;
 index index.html index.htm index.nginx-debian.html;

 server_name example.com www.example.com;

 location / {
  try_files $uri $uri/ =404;
 }
}

此配置告诉 NGINX 监听端口 80 上的传入连接,以便 example.comwww.example.com。务必更换 root 指令与您之前创建的目录路径一起使用。

通过符号链接启用 NGINX 服务器块

通过创建从 sites-available 目录到 sites-enabled 目录的符号链接来启用您的服务器块:

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/

最终配置和测试运行

最后,我们将编辑默认的 NGINX 配置文件并执行测试运行以确保一切按预期工作。

编辑NGINX配置文件

打开 nginx.conf 文件:

sudo nano /etc/nginx/nginx.conf

寻找这条线 server_names_hash_bucket_size 64;http {} 阻止并取消注释。

此指令允许 NGINX 分配更多内存,以处理长域名和更多数量的服务器名称。但是,请注意不要将此值设置得太高,因为它可能会消耗比所需更多的内存。

按 CTRL+O 和 CTRL+X 保存更改并退出编辑器。

测试您的 NGINX 配置

在继续并重新启动 NGINX 之前,最好先验证配置语法是否正确。运行以下命令启动测试运行:

sudo nginx -t

如果您的配置正确,您将看到以下输出:

nginx:配置文件/etc/nginx/nginx.conf语法正常 nginx:配置文件/etc/nginx/nginx.conf测试成功

这些消息表明您的 NGINX 配置已成功验证。

验证您的服务器块

为了确保您的服务器块正常运行,请在网络浏览器中打开您的域名。您应该会看到确认您的服务器块已激活的测试页面。

额外的 Nginx 命令

增强 Web 服务器中的文件安全性

您的 Web 服务器上的文件和文件夹的安全性至关重要。避免访问权限过于宽松。使用这些命令为您的 Web 根目录中的所有文件和目录设置正确的权限。

记得更换 /var/www/example.com/ 使用你的 webroot 路径:

sudo find /var/www/example.com/ -type d -exec chmod 755 "{}" \;
sudo find /var/www/example.com/ -type f -exec chmod 644 "{}" \;

这些命令为目录设置读取和执行权限,并为所有者设置文件读写权限。组和其他人获得只读访问权限。根据应用程序需求调整这些权限。

使用 Let's Encrypt 免费 SSL 证书保护 Nginx 安全

使用 HTTPS 协议可确保 Web 服务器的安全。Let's Encrypt 提供免费的 SSL 证书。使用以下命令安装 certbot 包:

sudo apt install python3-certbot-nginx

然后,启动证书创建:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com

替换为您的电子邮件和域名。此命令设置具有所需安全功能的 HTTPS。

设置自动证书更新

Let's Encrypt 证书有效期为 90 天。使用 Certbot 脚本设置自动续订。测试流程:

sudo certbot renew --dry-run

如果成功,则将续订命令添加到crontab中:

sudo crontab -e

包括这一行以在每天午夜更新:

00 00 */1 * * /usr/sbin/certbot-auto renew

Nginx 服务器日志

监控服务器日志,确保 Web 服务器维护良好。默认情况下,日志位于 /var/log/nginx. 列出它们:

cd /var/log/nginx && ls -l

最相关的日志文件是 access.logerror.log。要实时监控日志,请使用 tail -f 命令后跟日志路径:

tail -f /var/log/nginx/access.log

更新 Nginx

在更新 Nginx 服务器之前,创建当前配置的备份是明智之举。要备份主配置,请执行以下操作: nginx.conf 文件,使用以下命令:

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf

如果您对 Nginx 设置进行了大量定制,则可能需要备份整个 Nginx 目录:

sudo cp -r /etc/nginx/ /etc/nginx-bkup

安全备份配置后,您现在可以继续更新 Nginx:

sudo apt update
sudo apt upgrade

定期备份您的配置是一种很好的做法,特别是在复杂的设置中。

删除 Nginx

如果您的服务器上不再需要 Nginx,可以按照以下步骤将其删除。首先,确保 Nginx 服务已停止:

sudo systemctl disable nginx --now

接下来,完全删除 Nginx 包:

sudo apt remove nginx

您可能仍会在 /etc/nginx 目录。要删除这些内容,请使用以下命令:

sudo rm -R /etc/nginx/

请记住,这将删除所有自定义配置文件,因此请确保在继续此步骤之前已备份所需的所有内容。

在 Nginx 中配置日志轮换参数

Nginx 默认包含每日日志轮换功能。但是,您可以根据需要自定义这些设置。

访问日志轮换的配置文件

要修改日志轮换设置,您需要访问配置文件。您可以使用 nano 文本编辑器打开它,如下所示:

sudo nano /etc/nginx/logrotate.d/nginx

打开文件后,您将看到类似以下内容的内容。调整此文件中的指令以满足您的日志保留和轮换需求,主要是如果您使用 fail2ban 等监控工具。

示例日志轮换配置文件

/var/log/nginx/*.log {
  daily
  missingok
  rotate 14
  compress
  delaycompress
  notifempty
  create 0640 www-data adm
  sharedscripts
  prerotate
  if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
  run-parts /etc/logrotate.d/httpd-prerotate; \
  fi \
  endscript
  postrotate
  invoke-rc.d nginx rotate >/dev/null 2>&1
  endscript
}

了解主要配置参数

在此配置中,系统管理员通常关注两个主要设置:

  1. 日常的:此设置设置日志轮换频率。虽然默认为“每日”,但您可以将其更改为“每周”或“每月”。但是,每日轮换通常可以简化日志管理。
  2. 旋转 14:此数字告诉系统要保留多少个日志文件。例如,设置为“14”将保留最新的 14 个日志。如果您只想存储一周的日志,请将此数字调整为“7”。

虽然 Nginx 允许您修改其他设置,但更改时务必小心谨慎。在不了解其影响的情况下更改设置可能会导致意外结果。请确保您修改这些设置以满足您的需求,而不会导致意外问题。

请记住,日志管理没有万能的方法。在进行更改之前,请务必评估您的特定环境和要求。

结束语

在本指南中,我们介绍了如何在 Debian 上设置 Nginx,包括安装、配置和基本优化。通过将 Nginx 的效率与 Debian 的稳定性相结合,您为 Web 服务器奠定了坚实的基础。请记住保持服务器更新,并探索其他 Nginx 模块以增强功能。如果您遇到任何问题,Debian 和 Nginx 周围的强大社区始终是很好的资源。感谢您的关注,祝您托管愉快!

Joshua James
跟我来
Joshua James 的最新帖子 (查看全部)

发表评论