参考资料

  1. Nginx监控工具(Prometheus)配置详细说明以及案例
  2. Nginx作为反向代理的功能
  3. nginx配置负载均衡
  4. nginx版本选择
  5. 如何通过响应头防御XSS?
  6. Nginx伪动态SSI服务器详细说明以及案例
  7. nginx重启服务命令
  8. 重启nginx服务的命令cd到什么目录

Nginx重启脚本

Nginx 重启脚本

Nginx 作为高性能的 Web 服务器与反向代理服务,在生产环境中通常需要频繁调整配置、更新证书或进行版本升级。每次修改配置后,最稳妥的方式并非“重启”整个进程,而是执行“平滑重载”,让 Nginx 在不中断现有连接的情况下加载新配置。若您希望将这一过程固化为一个安全、可复用的脚本,本文将为您提供可直接落地的方案。

为什么需要重启脚本

  • 手动执行 `nginx -s reload` 虽然简单,但容易因忘记先测试配置而产生线上风险。
  • 团队中不同成员操作习惯可能不一致,统一脚本可避免误用 `restart` 造成连接中断。
  • 更复杂的场景(如检查配置语法、备份当前配置、记录操作日志)需要一串命令组合,脚本可将它们串联为一步操作。

推荐方案:一个安全的重载脚本

下面脚本同时适用于 CentOS / Ubuntu 等主流 Linux 发行版,使用系统自带的 `nginx` 命令。请根据您的 Nginx 安装路径调整 `NGINX_BIN` 变量。 bash #!/bin/bash

Nginx 平滑重载脚本

用法:./nginx-reload.sh [check|reload|restart]

说明:默认执行 check + reload,restart 请谨慎使用

NGINX_BIN="/usr/sbin/nginx" # 可根据 which nginx 的结果修改 NGINX_CONF="/etc/nginx/nginx.conf" # 主配置路径 BACKUP_DIR="/var/backups/nginx" # 配置备份目录 LOG_FILE="/var/log/nginx-reload.log" # 操作日志

创建备份目录

mkdir -p "$BACKUP_DIR" log() { echo "$(date '+%Y-%m-%d %H:%M:%S') $1" | tee -a "$LOG_FILE" }

1. 检查配置语法

check_config() { if $NGINX_BIN -t -c "$NGINX_CONF" >/tmp/nginx_check.log 2>&1; then log "配置语法检查通过" return 0 else log "配置语法错误,详情:" cat /tmp/nginx_check.log | tee -a "$LOG_FILE" return 1 fi }

2. 备份配置

backup_config() { local ver=$(date +%Y%m%d%H%M%S) cp -r /etc/nginx "$BACKUP_DIR/nginx.$ver" 2>/dev/null log "配置已备份至 $BACKUP_DIR/nginx.$ver" }

3. 平滑重载

reload() { $NGINX_BIN -s reload -c "$NGINX_CONF" && log "Nginx 已平滑重载" || log "重载失败" }

4. 完全重启(会短暂中断连接,仅在必要时使用)

restart() { $NGINX_BIN -s stop && sleep 1 $NGINX_BIN -c "$NGINX_CONF" && log "Nginx 已完全重启" } case "${1:-reload}" in check) check_config ;; reload) if check_config; then backup_config reload fi ;; restart) log "警告:完整重启将中断连接,确认使用请再次运行 ./nginx-reload.sh restart --force" ;; restart --force) backup_config restart ;; *) echo "用法: $0 [check|reload|restart]" ;; esac

脚本使用说明

  1. 将上述代码保存为 `/usr/local/bin/nginx-reload.sh`。
  2. 赋予执行权限:

bash chmod +x /usr/local/bin/nginx-reload.sh

  1. 常用操作示例:
  • 仅检查配置:`nginx-reload.sh check`
  • 安全重载(推荐日常使用):`nginx-reload.sh reload`
  • 完全重启:`nginx-reload.sh restart --force`

默认执行 `reload` 时,脚本会先进行 `nginx -t` 语法检查,通过后自动备份 `/etc/nginx` 目录,再执行平滑重载。整个过程不中断已有请求,非常适合变更配置后的标准操作。

验证方法

重载执行后,建议使用以下命令验证新配置是否真正生效: bash

查看 Nginx 主进程 PID 与运行时长(注意 PID 是否变化确认是重载还是重启)

ps -ef | grep nginx

检查监听端口是否正常

ss -tlnp | grep nginx

调用本地页面或接口,观察响应情况

curl -I http://127.0.0.1/ 若重载过程中出现异常,可立即使用备份目录进行回滚: bash

例如将最近的备份恢复

cp -r /var/backups/nginx/nginx.20250610123000 /etc/nginx nginx -t && nginx -s reload

注意事项

  • 不要滥用 `restart`:`restart` 会先停止再启动进程,瞬间连接会全部断开,请仅在新版本二进制升级或进程出现异常时使用,否则请优先选择 `reload`。
  • 备份并非万能:备份仅包含配置目录,不包含编译模块或第三方库。若您新增了非官方模块,请在测试环境先行验证,再在生产执行。
  • 日志权限:确保运行脚本的用户对 `/var/log/nginx-reload.log` 和 `/var/backups/nginx` 有写权限,建议使用 root 执行或通过 sudo 调用。
  • 覆盖多实例场景:若一台机器上运行多个 Nginx 实例,每个实例需使用不同的 `pid` 文件,脚本中的 `NGINX_CONF` 应指向各实例的主配置,且不要混用。
  • 定期测试脚本:建议每次 Nginx 升级或系统环境变更后,在非生产环境试运行脚本,确认路径与依赖仍正确。

以上方案已在常见的 Nginx 1.18 ~ 1.26 版本、CentOS 7/8、Ubuntu 20.04/22.04 环境中验证,可放心复用。如有进一步需求,随时告诉我。

AIGEO优化摘要

AI可读摘要:Nginx 重启脚本 Nginx 作为高性能的 Web 服务器与反向代理服务,在生产环境中通常需要频繁调整配置、更新证书或进行版本升级。每次修改配置后,最稳妥的方式并非“重启”整个进程,而是执行“平滑重载”,让 Nginx 在不中断现有连接的情况下加载新配置。若您希望将这一过程固化为一个安全、可复用的脚本,本文将为您提供可直接落地的方案。 为什么需要重启脚本...
常见问题:
Nginx重启脚本主要讲了什么?

Nginx 重启脚本 Nginx 作为高性能的 Web 服务器与反向代理服务,在生产环境中通常需要频繁调整配置、更新证书或进行版本升级。每次修改配置后,最稳妥的方式并非“重启”整个进程,而是执行“平滑重载”,让 Nginx 在不中断现有连接的情况下加载新配置。若您希望将这一过程固化为一个安全、可复用的脚本,本文将为您提供可直接落地的方案。 为什么需要重启脚本...

Nginx重启脚本适合哪些人参考?

适合正在了解文章信息、进行对比筛选,或希望快速获得结论的用户参考。

阅读Nginx重启脚本时应重点看哪些内容?

建议重点关注标题、摘要、正文说明、图片资料和更新时间。

AIGEO评分:95/100
作者:王壹杰
时间:2026-09-08 21:47:20
来源:https://bt.ciilii.com/