我在Windows版本上查看了Nginx的代码。 但我不明白大师是如何与工人分享听力插座的。
在Linux上直截了当。当fork()时,worker继承master的文件描述。
但是当谈到Windows版本时,在CreateProcess()函数中,它指定了" bInheritHandles"参数字段为" 0",表示它不继承句柄!
那么工作人员如何与主人分享监听套接字?
我确实阅读了两天的代码,只是为了找到这个问题的答案。 但我仍然无法理解。
谢谢!
*此问题与另一个How does nginx worker process share the 'listen socket'非常相似 但事实并非如此。因为那个人正在询问Linux平台上的那个。
答案 0 :(得分:0)
它没有。相反,在Windows上,每个nginx工作进程都会创建自己的侦听套接字,并使用它们来接受连接。
可以在相同的端口上创建侦听套接字,因为nginx在侦听套接字上使用setsockopt(SO_REUSEADDR)
,这样就可以在Windows上完全重复监听套接字。
这些重复的侦听套接字中只有一个实际可行,而且the documentation中列出了Windows的nginx的第一个限制:
虽然可以启动几个工作人员,但实际上只有其中一个工作。
请注意,Windows"的nginx被认为是 beta 版本"。