为什么 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 成功绑定。

相关推荐
绵绵细雨中的乡音15 分钟前
网络基础知识
linux·网络
Peter·Pan爱编程35 分钟前
Docker在Linux中安装与使用教程
linux·docker·eureka
kunge20131 小时前
Ubuntu22.04 安装virtualbox7.1
linux·virtualbox
清溪5491 小时前
DVWA中级
linux
Sadsvit2 小时前
源码编译安装LAMP架构并部署WordPress(CentOS 7)
linux·运维·服务器·架构·centos
苦学编程的谢3 小时前
Linux
linux·运维·服务器
G_H_S_3_3 小时前
【网络运维】Linux 文本处理利器:sed 命令
linux·运维·网络·操作文本
Linux运维技术栈3 小时前
多系统 Node.js 环境自动化部署脚本:从 Ubuntu 到 CentOS,再到版本自由定制
linux·ubuntu·centos·node.js·自动化
拾心214 小时前
【运维进阶】Linux 正则表达式
linux·运维·正则表达式