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.com
和 www.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.log
和 error.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
}
了解主要配置参数
在此配置中,系统管理员通常关注两个主要设置:
- 日常的:此设置设置日志轮换频率。虽然默认为“每日”,但您可以将其更改为“每周”或“每月”。但是,每日轮换通常可以简化日志管理。
- 旋转 14:此数字告诉系统要保留多少个日志文件。例如,设置为“14”将保留最新的 14 个日志。如果您只想存储一周的日志,请将此数字调整为“7”。
虽然 Nginx 允许您修改其他设置,但更改时务必小心谨慎。在不了解其影响的情况下更改设置可能会导致意外结果。请确保您修改这些设置以满足您的需求,而不会导致意外问题。
请记住,日志管理没有万能的方法。在进行更改之前,请务必评估您的特定环境和要求。
结束语
在本指南中,我们介绍了如何在 Debian 上设置 Nginx,包括安装、配置和基本优化。通过将 Nginx 的效率与 Debian 的稳定性相结合,您为 Web 服务器奠定了坚实的基础。请记住保持服务器更新,并探索其他 Nginx 模块以增强功能。如果您遇到任何问题,Debian 和 Nginx 周围的强大社区始终是很好的资源。感谢您的关注,祝您托管愉快!