返回顶部
分享到

Windows上启动停止Nginx服务器

nginx 来源:互联网 作者:佚名 发布时间:2026-02-12 19:05:04 人浏览
摘要

在 Windows 上开发 Django、Vue 或其他 Web 项目时,Nginx 往往是我们最常用的反向代理服务器。然而,不同于 Linux 系统上顺手的 systemctl 命令,Windows 上的 Nginx 管理总是让新手感到困惑:到底是用命

在 Windows 上开发 Django、Vue 或其他 Web 项目时,Nginx 往往是我们最常用的反向代理服务器。然而,不同于 Linux 系统上顺手的 systemctl 命令,Windows 上的 Nginx 管理总是让新手感到困惑:到底是用命令行?还是注册成服务?为什么我点了停止,进程还在后台“僵尸”般存在?

今天,我们就来彻底解决 Windows 上 Nginx 的启动与停止问题,并附赠一个“进程强杀”脚本。

一、 为什么 Windows 上的 Nginx 容易“关不掉”

首先要理解 Nginx 的多进程模型。

  • Master Process(主进程):负责管理配置、绑定端口、生成 Worker 进程。
  • Worker Processes(工作进程):负责实际处理 HTTP 请求。

当你在 Linux 上执行 nginx -s stop 时,主进程会向所有子进程发送退出信号,优雅地关闭。但在 Windows 上,如果你直接在“服务”里点击停止,或者主进程异常崩溃,Worker 进程可能会变成孤儿进程,继续占用 80/443 端口,导致你下次启动时提示 bind() to 0.0.0.0:80 failed (10048: Unknown error)。

二、 推荐方案:命令行直接控制(最稳妥)

对于开发环境,强烈不建议直接去“计算机管理”里点停止。最可靠的方式是使用 Nginx 自带的命令行指令。

1. 启动 Nginx

打开 CMD 或 PowerShell,进入 Nginx 目录:

cd C:\nginx-1.24.0  # 替换为你的Nginx路径
start nginx

  • start nginx:会在后台弹出一个新窗口运行,关闭原窗口不影响 Nginx。
  • nginx:会在当前窗口运行,关闭窗口即停止服务(适合调试看日志)。

2. 停止 Nginx(两种模式)

Nginx 提供了两种停止方式,务必分清:

快速停止(强制):类似于 kill -9,直接断掉所有连接。

1

nginx -s stop

优雅停止(推荐):类似于 kill -15,等待 Worker 处理完当前请求再退出。

1

nginx -s quit

注意:在 Windows 服务模式下,有时 quit 命令不生效,这时只能用 stop。

3. 重载配置

修改 nginx.conf 后,不需要重启,直接重载:

1

nginx -s reload

4. 检查配置是否正确

在启动或重启前,务必先测试配置文件语法:

1

nginx -t

如果显示 nginx: configuration file ... test is successful,则可以放心启动。

三、 进阶方案:注册为 Windows 服务(开机自启)

如果你希望 Nginx 像 MySQL 一样开机自启,可以将其注册为服务。但千万不要直接用 sc.exe 命令硬注册,推荐使用 NSSM (Non-Sucking Service Manager) 工具,它能更好地管理进程树。

使用 NSSM 注册步骤:

1.下载 NSSM

2.管理员身份运行 CMD,执行安装:

1

nssm install Nginx

3.在弹出的 GUI 界面中设置:

  • Path:选择 nginx.exe 的路径。
  • Startup directory:选择 Nginx 的根目录。
  • Arguments:如果配置文件不在默认位置,填 -c conf\nginx.conf。

4.点击“Install service”。

5.在“服务”列表中找到 Nginx,右键启动。

重要提示:关于 worker_processes

如果你注册为服务并使用了 worker_processes auto;,在停止服务时极易出现进程残留。

解决方案:在开发机上,建议将配置改为 worker_processes 1;。虽然牺牲了多核性能,但在本地开发环境下几乎无感知,却能极大减少进程管理的麻烦。

四、 急救方案:当进程“杀不死”时怎么办?

当你遇到以下情况:

  • 端口被占用(80/443),但找不到进程。
  • 服务里点了停止,但任务管理器里还有 nginx.exe。
  • 修改配置后重启无效。

这时候就需要强制清理所有 Nginx 进程。

方法 1:手动操作

打开任务管理器 -> 详细信息。

找到所有 nginx.exe(包括 master 和 worker)。

右键 -> 结束任务树。

方法 2:一键脚本(推荐)

为了避免每次都手动查找,我写了一个批处理脚本,以管理员身份运行即可一键清理所有后台 Nginx 进程。

创建 clean_nginx.bat 文件,复制以下代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

@echo off

title Nginx 进程强制清理工具

color 0b

 

echo ====================================================

echo           Nginx 进程强制清理工具

echo ====================================================

echo.

 

:: 检查管理员权限

net session >nul 2>&1

if %errorLevel% == 0 (

    echo [状态] 当前具有管理员权限

) else (

    echo [警告] 非管理员权限,可能无法清理系统进程

    echo [提示] 请右键点击此脚本,选择"以管理员身份运行"

    echo.

)

 

echo [步骤 1] 正在扫描 Nginx 进程...

tasklist /FI "IMAGENAME eq nginx.exe" 2>nul | find /I "nginx.exe" >nul

if %errorLevel% == 0 (

    echo [发现] 找到正在运行的 Nginx 进程

) else (

    echo [信息] 未找到 Nginx 进程,无需清理

    goto :end

)

 

echo.

echo [步骤 2] 正在强制终止所有 Nginx 进程...

taskkill /F /IM nginx.exe >nul 2>&1

if %errorLevel% == 0 (

    echo [成功] 已发送终止信号

) else (

    echo [错误] 终止失败,请检查权限

    goto :end

)

 

echo.

echo [步骤 3] 验证清理结果...

timeout /t 2 /nobreak >nul

tasklist /FI "IMAGENAME eq nginx.exe" 2>nul | find /I "nginx.exe" >nul

if %errorLevel% == 0 (

    echo [警告] 仍有残留进程,尝试二次清理...

    taskkill /F /FI "IMAGENAME eq nginx.exe" >nul 2>&1

) else (

    echo [成功] 所有 Nginx 进程已清理干净!

)

 

:end

echo.

echo ====================================================

echo 操作完成!

echo ====================================================

echo.

pause

使用方法:

  • 保存为 .bat 文件。
  • 右键 -> 以管理员身份运行。
  • 脚本会自动查找并杀掉所有 nginx.exe 进程,包括僵尸进程。

五、 总结

场景 推荐操作 命令/工具
日常开发调试 命令行直接控制 start nginx / nginx -s quit
生产/长期运行 NSSM 注册服务 nssm install + 服务管理器
配置多核优化 修改配置文件 worker_processes auto; (需配合NSSM)
避免麻烦 开发机折中方案 worker_processes 1;
进程失控/端口占用 强制清理脚本 clean_nginx.bat (管理员运行)

版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • Windows上启动停止Nginx服务器
    在 Windows 上开发 Django、Vue 或其他 Web 项目时,Nginx 往往是我们最常用的反向代理服务器。然而,不同于 Linux 系统上顺手的 systemctl 命令,
  • 使用nginx实现ssh跳板机方式
    基础环境 跳板机,IP:192.168.3.174 控制机01,IP:192.168.2.78 控制机02,IP:192.168.2.79 控制机01、控制机02只允许跳板机访问。 nginx安装 这里使用
  • Nginx缓存清理实现方式
    Nginx 作为一个高效的 Web 服务器和反向代理服务器,在提供快速的页面响应和优化 Web 性能方面起着至关重要的作用。 Nginx 的缓存机制通过存
  • 清空nginx缓存并强制刷新实现过程
    清空nginx缓存并强制刷新 当对nginx的文件进行修改或更新时,可能会出现旧文件被缓存而无法立即生效的问题,此时需要清空nginx的文件缓存
  • Nginx静态资源优化、压缩、缓存介绍

    Nginx静态资源优化、压缩、缓存介绍
    优化 Nginx对静态资源如何进行优化配置。这里从三个属性配置进行优化: 1 2 3 sendfile on; tcp_nopush on; tcp_nodeplay on; send?le 用来开启高效的文件
  • Nginx HTTP反向代理负载均衡实验教程

    Nginx HTTP反向代理负载均衡实验教程
    一、实验目标 在 192.168.65.135 上部署 Nginx,作为七层 HTTP 反向代理。 将www.xiaotiantian.org的流量轮询转发到两台后端 Web: 192.168.65.131:80 192.16
  • windows下安装Nginx的方法

    windows下安装Nginx的方法
    概念 是一个高性能的HTTP和反向代理web服务器。 代理 正向代理 一个客户端与目标服务器之间的代理服务器。 正向代理是代表客户端来进行
  • Nginx报错“Too many open files”的问题解决
    1. 调整系统级文件描述符限制 a. 临时生效(重启后失效): 1 ulimit -n 65535 # 设置当前会话的打开文件数限制 b. 永久生效: 编辑/etc/security
  • Nginx设置https和http同时使用同一个端口访问
    以下是一个同时使用 HTTP 和 HTTPS 并通过 8070 端口的配置示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 server { liste
  • Nginx+keepalived配置的实现步骤

    Nginx+keepalived配置的实现步骤
    一、需要的服务 Nginx、keepalived、epel-release -y 二、安装命令 1 2 3 4 5 6 7 yum install -y keepalived #安装nginx以及拓展源 yum install epel-release -y yum ins
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计