我只用一个工人启动了 nginx。
ps --forest -fC nginx
UID PID PPID C STIME TTY TIME CMD
root 3615889 10118 0 14:18 ? 00:00:00 nginx: master process nginx
nginx 3615890 3615889 0 14:18 ? 00:00:00 \_ nginx: worker process
两个进程都侦听端口 80。
- pid=3615889 为主
- pid=3615890 是工人
那么,当请求来自互联网时,谁来处理它?
从 OSI 层的角度来看,流程如何工作?我是否错误地假设所有请求都会发送到主服务器,然后路由到工作人员或工作人员可以独立处理请求?
我对监听同一个套接字的两个进程感到困惑(设备#2151156)
sudo ss -ltnp | grep nginx
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=3615890,fd=8),("nginx",pid=3615889,fd=8))
LISTEN 0 511 [::]:80 [::]:* users:(("nginx",pid=3615890,fd=9),("nginx",pid=3615889,fd=9))
sudo lsof -i TCP:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 3615889 root 8u IPv4 2151156 0t0 TCP *:http (LISTEN)
nginx 3615889 root 9u IPv6 2151157 0t0 TCP *:http (LISTEN)
nginx 3615890 nginx 8u IPv4 2151156 0t0 TCP *:http (LISTEN)
nginx 3615890 nginx 9u IPv6 2151157 0t0 TCP *:http (LISTEN)