在Windows平台上,nginx主进程如何共享监听套接字到工作者?

时间:2016-10-07 00:29:47

标签: windows sockets nginx

我在Windows版本上查看了Nginx的代码。 但我不明白大师是如何与工人分享听力插座的。

在Linux上直截了当。当fork()时,worker继承master的文件描述。

但是当谈到Windows版本时,在CreateProcess()函数中,它指定了" bInheritHandles"参数字段为" 0",表示它不继承句柄!

那么工作人员如何与主人分享监听套接字?

我确实阅读了两天的代码,只是为了找到这个问题的答案。 但我仍然无法理解。

谢谢!

*此问题与另一个How does nginx worker process share the 'listen socket'非常相似 但事实并非如此。因为那个人正在询问Linux平台上的那个。

1 个答案:

答案 0 :(得分:0)

它没有。相反,在Windows上,每个nginx工作进程都会创建自己的侦听套接字,并使用它们来接受连接。

可以在相同的端口上创建侦听套接字,因为nginx在侦听套接字上使用setsockopt(SO_REUSEADDR),这样就可以在Windows上完全重复监听套接字。

这些重复的侦听套接字中只有一个实际可行,而且the documentation中列出了Windows的nginx的第一个限制:

  

虽然可以启动几个工作人员,但实际上只有其中一个工作。

请注意,Windows"的nginx被认为是 beta 版本"。