可用netstat -tlnp | grep nginx查看Nginx监听端口,其中master进程绑定端口;用netstat -tnp | grep ':80' | grep ESTABLISHED统计活跃连接数;需root权限、注意绑定地址及推荐改用ss命令。

可以通过 netstat 快速查看 Nginx 当前监听的端口以及活跃连接状态,但需注意其输出需结合 Nginx 配置与实际运行模式(如是否使用 systemd、是否启用多进程/worker 进程)来准确解读。
确认 Nginx 正在监听哪些端口
运行以下命令查看所有监听中的 TCP 端口,并筛选出与 Nginx 相关的:
netstat -tlnp | grep nginx
说明:
- -t:仅显示 TCP 连接;
- -l:仅显示监听(LISTEN)状态的套接字;
- -n:以数字形式显示地址和端口(不解析主机名和服务名);
- -p:显示占用端口的进程名和 PID(需要 root 权限,否则可能显示“-”或报权限错误)。
常见输出示例:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx: master
这表示主进程(PID 1234)在 0.0.0.0:80 上监听,通常由 master 进程绑定端口,worker 进程处理连接。
查看 Nginx 的活跃客户端连接
若要观察当前有多少客户端正在连接 Nginx(例如 HTTP 请求未关闭、Keep-Alive 持久连接等),可执行:
netstat -tnp | grep ':80' | grep 'ESTABLISHED'
说明:
- 去掉 -l 参数后,
netstat -tnp显示所有 TCP 连接(包括已建立、等待关闭等); -
grep ':80'筛选目标端口(也可替换为 :443 等); -
grep 'ESTABLISHED'只保留已建立的连接; - 连接数较多时,可用
wc -l统计:netstat -tnp | grep ':80' | grep ESTABLISHED | wc -l。
区分 master 与 worker 进程的端口占用
Nginx 默认由 master 进程绑定端口,worker 进程继承该 socket 并协作处理请求。因此 netstat -tlnp 中通常只看到 master 进程出现在 LISTEN 行,而 ESTABLISHED 连接归属无法直接对应到具体 worker PID(Linux 内核层面共享 socket,netstat 不显示 worker)。若需进一步分析 worker 行为,建议结合:
-
ps aux | grep nginx查看 master 和 worker 进程 PID; -
ss -tnp 'sport = :80'(ss是更现代的替代工具,性能更好,部分系统默认未安装); - Nginx 自带的
stub_status模块(需配置并启用)获取实时连接数、处理请求数等指标。
常见问题与注意事项
使用 netstat 监控时容易忽略的关键点:
- 非 root 用户执行
-p参数可能看不到进程名和 PID,建议用sudo netstat -tlnp; - 若 Nginx 配置了
listen 127.0.0.1:8080,则netstat中显示的是127.0.0.1:8080,不会响应外部请求,需检查 bind 地址; - 使用 systemd 启动的 Nginx 若设置了
PrivateNetwork=yes或RestrictAddressFamilies=,可能影响netstat输出范围; -
netstat已被标记为废弃,推荐长期使用ss替代(如ss -tlnp | grep nginx)。

















