解决启动Nginx时80端口被占用的问题

前言

在启动nginx.exe时,可能会遇到一闪而过的情况,此时查看任务管理器,会发现nginx根本没有启用.
我们可以打开控制面板nginx -t 查看相关信息
在这里插入图片描述
可以看到

nginx: the configuration file D:\nginx-1.20.2/conf/nginx.conf syntax is ok
nginx: [emerg] bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)
nginx: configuration file D:\nginx-1.20.2/conf/nginx.conf test failed

这个错误信息表明 Nginx 在尝试绑定到端口 80 时遇到了权限问题。错误代码 10013 通常意味着你的 Nginx 服务没有足够的权限来监听该端口。在 Windows 系统上,端口 80 和 443 等低端口号通常需要管理员权限才能使用。

我们可以选择修改Nginx的默认端口来解决这个问题,本文则选择处理掉这个占用80端口的程序 -

那么是哪个程序占用了80端口呢?
你可以使用命令netstat -aon | findstr :80来检查哪个程序正在使用该端口。如果发现有程序正在使用,你需要停止那个程序或更改 Nginx 的监听端口。
在这里插入图片描述
根据信息,找到80端口的PID=4 ,再到任务管理器中查看:在这里插入图片描述
通过右键,属性,看到该服务是调用了ntoskrnl.exe。
在这里插入图片描述
不要着急结束进程,先来了解一下ntoskrnl.exe

  1. ntoskrnl.exe 是 Windows 操作系统的内核程序,它扮演着基础和核心的角色,负责管理系统的核心功能,确保系统的正常运行。
  2. ntoskrnl.exe 通常位于系统文件夹(如 C:\Windows\System32)中,是系统正常运行的关键组件。任何对 ntoskrnl.exe 的损害或冲突都可能导致系统不稳定甚至崩溃。因此,保持该文件的完整性和兼容性对于系统的稳定运行至关重要。
  3. 当 ntoskrnl.exe 出现问题时,常见的症状包括系统蓝屏、自动重启或者系统性能下降
    总的来说,ntoskrnl.exe 是 Windows 操作系统中不可或缺的一部分,它的稳定性和性能直接影响着整个系统的运行状况。

ntoskrnl.exe 是 Windows 操作系统的一个重要内核程序文件,里面存储了大量的二进制内核代码,用于调度系统。因此,我们不能随意就结束掉这个任务.

解决方法

1. 搜索服务打开在这里插入图片描述

2. 找到World Wide Web 发布服务这个服务,右键属性,将它的启动类型改为手动,然后停止掉该服务。

在这里插入图片描述

3. 此时就可以正常启动nginx了

在这里插入图片描述

<think>好的,用户之前问过关于PHP运行环境的问题,现在又遇到了启动Nginx80端口占用问题。我需要先分析这个问题可能的原因,然后给出解决方案。 首先,用户可能是在本地开发环境中使用Nginx,比如在Windows上使用WAMP或者直接安装的Nginx80端口占用通常是因为其他程序已经占用了这个端口,比如Apache、IIS、Skype或者其他应用程序。 接下来,我需要考虑如何帮助用户找出占用80端口进程。对于不同操作系统,命令可能不同。用户可能使用的是Windows,因为如果是Linux,他们可能更熟悉命令行工具。但为了全面,我应该涵盖Windows和Linux两种情况的解决方法。 然后,解决步骤大致分为:检查端口占用情况、终止占用进程、修改Nginx配置或调整其他服务的端口。需要详细说明每个步骤的具体操作,比如在Windows下使用netstat命令,或者使用资源监视器,而在Linux下使用lsof或netstat。 同,用户可能需要知道如何以管理员权限运行命令,特别是Windows下可能需要管理员权限才能终止某些系统进程。另外,修改Nginx配置文件的路径和示例也很重要,避免用户找不到配置文件的位置。 还需要提醒用户修改配置后重新加载Nginx服务,以及检查防火墙设置,确保新的端口有被阻止。另外,常见的占用程序如Skype或IIS服务可能需要用户手动关闭或调整设置。 此外,用户可能对命令行操作不太熟悉,所以需要给出明确的命令示例,比如如何查找进程ID,如何使用taskkill终止进程。同,要注意用户可能不知道如何编辑配置文件,可能需要指导他们使用文本编辑器进行操作。 最后,需要总结可能的解决方案,让用户根据实际情况选择合适的方法。确保步骤清晰,避免技术术语过多,让不同水平的用户都能理解并操作。</think>当 Nginx 启动提示 **`80 端口占用`**,通常是因为其他程序(如 Apache、IIS、Skype 等)已占用了该端口。以下是系统的排查与解决方法: --- ### **一、快速定位占用 80 端口的程序** #### **1. 通过命令行查找占用进程** - **Windows 系统**: ```bash # 查找占用 80 端口进程 PID netstat -ano | findstr :80 # 根据 PID 查找进程名称(替换 YOUR_PID) tasklist | findstr YOUR_PID ``` - **Linux/macOS 系统**: ```bash # 查找占用 80 端口进程 sudo lsof -i :80 # 或 sudo netstat -tulpn | grep :80 ``` #### **2. 通过工具可视化查找(Windows)** - 打开 **任务管理器** → **详细信息** → 右键列头勾选 **PID**。 - 使用 **资源监视器**(搜索 `resmon`)→ **网络** → 筛选 `80` 端口。 --- ### **二、终止占用 80 端口进程** #### **1. 停止冲突程序** - **常见占用程序**: - **Apache/IIS**:停止对应的 Web 服务。 - **Skype**:关闭 Skype 或取消其默认使用 80 端口(设置 → 高级 → 取消勾选 `使用 80 和 443 端口`)。 - **SQL Server Reporting Services**:通过服务管理器停止 `SQL Server Reporting Services`。 - **强制终止进程**: ```bash # Windows(需管理员权限) taskkill /PID YOUR_PID /F # Linux/macOS sudo kill -9 YOUR_PID ``` #### **2. 禁用系统服务(Windows)** - 按 `Win + R` 输入 `services.msc`,找到以下服务并停止: - **World Wide Web Publishing Service**(IIS) - **SQL Server Reporting Services** - **BranchCache**(某些系统可能占用) --- ### **三、修改 Nginx 端口(备选方案)** 如果无法终止占用程序,可修改 Nginx 监听的端口(如改为 `8080`): 1. **编辑 Nginx 配置文件** 找到 `nginx.conf`(默认路径:`/etc/nginx/nginx.conf` 或 Windows 安装目录下的 `conf` 文件夹),修改 `listen` 指令: ```nginx server { listen 8080; # 改为 8080 或其他端口 server_name localhost; # 其他配置... } ``` 2. **重启 Nginx** ```bash # Linux/macOS sudo nginx -s reload # Windows(需在 Nginx 安装目录下运行) nginx.exe -s reload ``` --- ### **四、检查防火墙与权限** - **防火墙放行新端口**:如果修改了端口(如 `8080`),需确保防火墙允许该端口通信。 - **以管理员权限运行**:在 Windows 中,80 端口可能需要管理员权限才能绑定。右键 Nginx 启动程序 → **以管理员身份运行**。 --- ### **五、常见问题示例** #### **案例 1:Apache 占用 80 端口** - **解决方法**: 1. 停止 Apache 服务:`sudo systemctl stop apache2`(Linux)或在 Windows 服务管理器中停止。 2. 若需同运行 Apache 和 Nginx,可修改其中一个的端口(如 Apache 改为 `8080`)。 #### **案例 2:系统进程(如 http.sys)占用** - **现象**:Windows 提示 `PID=4` 的 `System` 进程占用 80 端口。 - **原因**:可能由 IIS 或 `HTTP.sys` 驱动占用。 - **解决**:禁用 IIS(控制面板 → 程序和功能 → 关闭 Windows 功能 → 取消勾选 `Internet Information Services`)。 --- ### **总结** | 步骤 | 操作要点 | |---------------------|--------------------------------------------------------------------------| | 1. 查找占用程序 | 使用 `netstat` 或 `lsof` 定位 PID 和进程名 | | 2. 终止冲突进程 | 关闭 Web 服务、Skype 或强制终止进程 | | 3. 修改端口(可选) | 调整 Nginx 的 `listen` 端口,避开冲突 | | 4. 检查权限与防火墙 | 确保端口可访问且 Nginx 有权限绑定端口 | 通过上述步骤,可快速解决 Nginx 80 端口占用问题。若需长期同运行多个服务,建议通过端口规划避免冲突。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vⅤ_Leon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值