nginx提示地址或端口被占用解决

本文介绍了解决Nginx启动时80端口被占用的方法,包括检查端口占用情况、杀死占用进程及重启Nginx的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nginx提示地址或端口被占用解决

今天小编在启动nginx 的时候遇到如下的错误

Starting nginx: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already use)
 

这个就是nginx 的80 端口被占用了 我们时常在nginx启动或者关闭关闭过多的情况下出现的

1、检查80端口被什么程序占用

fuser -n tcp 80

root@gaojin-R410IU:/home/gaojin# fuser -n tcp 80

80/tcp: 1116

2、删除对应的程序进程即可

kill -9 1116

3、如果确认就只有nginx占用,也可以直接结束nginx的所有进程

killall -9 nginx

好的再次 /etc/init.d/nginx start 就正常启动了

<think>好的,用户之前问过关于PHP运行环境的问题,现在又遇到了启动Nginx时80端口占用的问题。我需要先分析这个问题可能的原因,然后给出解决方案。 首先,用户可能是在本地开发环境中使用Nginx,比如在Windows上使用WAMP者直接安装的Nginx。80端口占用通常是因为其他程序已经占用了这个端口,比如Apache、IIS、Skype者其他应用程序。 接下来,我需要考虑如何帮助用户找出占用80端口的进程。对于不同操作系统,命令可能不同。用户可能使用的是Windows,因为如果是Linux,他们可能更熟悉命令行工具。但为了全面,我应该涵盖Windows和Linux两种情况的解决方法。 然后,解决步骤大致分为:检查端口占用情况、终止占用进程、修改Nginx配置调整其他服务的端口。需要详细说明每个步骤的具体操作,比如在Windows下使用netstat命令,者使用资源监视器,而在Linux下使用lsofnetstat。 同时,用户可能需要知道如何以管理员权限运行命令,特别是Windows下可能需要管理员权限才能终止某些系统进程。另外,修改Nginx配置文件的路径和示例也很重要,避免用户找不到配置文件的位置。 还需要提醒用户修改配置后重新加载Nginx服务,以及检查防火墙设置,确保新的端口没有被阻止。另外,常见的占用程序如SkypeIIS服务可能需要用户手动关闭调整设置。 此外,用户可能对命令行操作不太熟悉,所以需要给出明确的命令示例,比如如何查找进程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 端口占用的问题。若需长期同时运行多个服务,建议通过端口规划避免冲突。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值