我已经查看了Windows版本上的Nginx代码。但我不明白主人是怎么和工人分享监听套接字的。
它在Linux上是直接的。当它使用fork()时,工作人员将从主服务器继承文件描述。
但是当涉及到Windows时,在CreateProcess()函数中,它将"bInheritHandles“参数字段指定为"0",这意味着它不继承句柄!
那么工人如何与主共享监听套接字呢?
为了找到这个问题的答案,我读了两天的代码。但我还是不明白。
谢谢!
*这个问题看起来与另一个nginx辅助进程如何共享“侦听套接字”非常相似,但事实并非如此。因为那是在询问Linux平台上的那个。
发布于 2016-10-06 20:28:33
相反,在Windows上,每个nginx工作进程都会创建自己的侦听套接字,并使用它们来接受连接。
在相同端口上创建侦听套接字是可能的,因为nginx在侦听套接字上使用setsockopt(SO_REUSEADDR)
,这允许在Windows上完全复制侦听套接字。
不过,这些重复的侦听套接字中只有一个实际工作,下面是文献资料中列出的nginx的第一个限制。
虽然有几个工人可以开始工作,但实际上他们中只有一个人做任何工作。
请注意,“被认为是测试版”。
https://stackoverflow.com/questions/39907613
复制相似问题