CH-J Server Manager通过 SSH 管理服务器
菜单
全部指南与文章 →

管理 NGINX,让网站保持在线

备份配置,用 nginx -t 测试,通过平滑重载应用配置,并在失败时回滚。

重载而不是重启

重载会让 NGINX 重新读取配置,启动新的工作进程,并让旧进程处理完尚未完成的请求,因此访客通常不会察觉。如果无法应用新配置,NGINX 会继续使用旧配置运行。重启则会先停止服务,因此会中断连接;如果配置有误,服务可能无法再次启动。

备份要修改的文件

编辑前,在文件旁创建一份副本,并在名称中加上日期。不要把副本留在 NGINX 使用通配符加载的目录中,例如 conf.d/*.conf 或 sites-enabled/*,否则副本也会被加载。在 Debian 和 Ubuntu 上,应编辑 sites-available 中的文件;sites-enabled 中的条目通常只是指向该文件的链接。

sudo cp -a /etc/nginx/sites-available/example.conf /root/example.conf.$(date +%Y%m%d-%H%M%S)

先测试,再重载

nginx -t 会检查语法和配置引用的文件,例如证书。使用 nginx -T 可以查看展开所有包含文件后的完整配置。只有测试通过后才能重载;用 && 连接命令即可确保这一点。测试无法判断配置是否实现了你的预期,因此之后还应打开网站检查。

sudo nginx -t && sudo systemctl reload nginx
sudo nginx -T | less
curl -I https://example.com/

出现问题时

恢复备份副本,重新测试,然后重载。如果服务已停止,错误日志和系统日志会说明原因。留意端口已被占用、证书缺失或服务器名称重复等消息。

sudo cp -a /root/example.conf.20261031-120000 /etc/nginx/sites-available/example.conf
sudo nginx -t && sudo systemctl reload nginx
sudo journalctl -u nginx -n 50 --no-pager
sudo tail -n 50 /var/log/nginx/error.log

重载无法涵盖的情况

WebSockets 等长连接会一直由旧工作进程处理,直到连接结束,因此旧进程可能继续运行一段时间,并占用额外内存。软件包升级可能会自行重启服务。较大的变更应先在测试服务器上验证,包括证书和重定向。

CH-J Server Manager 中的 NGINX Manager

NGINX Manager 可编辑 Linux 服务器上受管理的 NGINX 目录中的配置文件,每个文件最大为 512 KiB。保存时,应用会创建带有 .chj-backup- 后缀的备份,运行 nginx -t,并仅在测试成功后保留修改。重载需要你明确确认,并会在开始前再次测试。sites-enabled 中启用的符号链接不会被替换;请编辑 sites-available 中对应的文件。

详细文档

NGINX: Controlling nginx →

NGINX: Beginner's Guide →

生物识别解锁与安全 →