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

相关推荐
青梅橘子皮4 小时前
Linux---基本指令
linux·运维·服务器
REDcker4 小时前
Linux信号机制详解 POSIX语义与内核要点 sigaction与备用栈实践
linux·运维·php
cui_ruicheng5 小时前
Linux进程间通信(三):System V IPC与共享内存
linux·运维·服务器
蚰蜒螟5 小时前
深入 Linux 内核同步机制:从 futex 到 spinlock 的完整旅程
linux·windows·microsoft
运维全栈笔记5 小时前
Linux安装配置Tomcat保姆级教程:从部署到性能调优
linux·服务器·中间件·tomcat·apache·web
dllmayday6 小时前
Linux 上用终端连接 WiFi
linux·服务器·windows
峥无8 小时前
Linux系统编程基石:静态库·动态库·ELF文件·进程地址空间全景图
linux·运维·服务器
用户2367829801688 小时前
从 chmod 755 说起:Unix 文件权限到底是怎么算的?
linux
Strugglingler8 小时前
【systemctl 学习总结】
linux·systemd·systemctl·journalctl·unit file
嵌入式×边缘AI:打怪升级日志9 小时前
100ASK-T113 Pro 开发板 Bootloader 完全开发指南
linux·ubuntu·bootloader