为什么 lsof 显示多个 nginx 都在 “使用 443”?

因为 lsof -i :443 不仅显示"谁在监听",还显示"谁在使用这个端口通信"。

✅ 核心原理:Nginx 的多进程架构

Nginx 是 master-worker 模型:

类型 数量 职责 是否监听端口
Master 进程 1 个(如 PID 1734) 管理配置、启动 worker、监听端口 ✅ 监听
Worker 进程 多个(如 2707653, 2707654...) 处理客户端请求 ❌ 不"重新"监听,而是继承 master 的监听套接字

🔔 重点:只有 master 进程(或第一个 worker)会"绑定并监听"端口,后续 worker 是通过共享套接字来处理连接的。

✅ 验证方法

你可以用下面命令确认哪个 PID 是主进程:

perl 复制代码
bash
深色版本
ps aux | grep nginx

输出类似:

yaml 复制代码
bash
深色版本
root      1734  0.0  0.1  123456  7890 ?  Ss   10:00   0:00 nginx: master process /usr/sbin/nginx
www-data 2707653  0.0  0.2  123456  8901 ?  S    10:05   0:00 nginx: worker process
www-data 2707654  0.0  0.2  123456  8902 ?  S    10:05   0:00 nginx: worker process
  • master process 是真正绑定端口的那个。
  • worker process 只是处理请求。

✅ 总结

PID 角色 是否导致 address already in use 原因
1734 (master) 主进程,LISTEN ✅ 是 它绑定了 443 端口
2707653+ (worker) 工作进程,ESTABLISHED ❌ 否 它只是在处理已有连接,不"重新监听"

🔑 所以我只强调 PID 1734,是因为它是真正导致端口冲突的源头。终止它(或整个 Nginx 服务),就能释放 443 端口,让 Docker 成功绑定。

相关推荐
2601_967987372 小时前
安装 Redis 或 Redis Stack
linux·windows·redis·macos·安装
feng_you_ying_li2 小时前
linux之数据链路层
linux·网络·智能路由器
GeW3 小时前
高端化走到深处,是数据库和Linux的事
linux
程序员初一4 小时前
Linux 远程桌面有四种做法
linux·ssh
程序开发阿元5 小时前
1C1G 能跑什么:把留常驻服务和不留摆进一张内存表
linux·ssh
xbzb7 小时前
自定义 yum 软件源:Linux 上 createrepo,Windows 上纯 Python 也能造
linux·运维·windows·python·yum·createrepo
Android系统攻城狮7 小时前
Linux FFmpeg深度解析之avio_open调用流程与实战(三十八)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
独隅7 小时前
WebStorm Linux 版安装实战与核心效能展示
linux·ide·webstorm
雪落漂泊10 小时前
Linux进程(五):进程地址空间篇
linux·运维·服务器
AR-26710-10 小时前
Linux Day32——网络,ROCE-IB与以太网
linux·运维