簡體   English   中英

在Windows平台上,nginx主進程如何共享監聽套接字到工作者?

[英]On Windows platform, how does nginx master process share listen sockets to worker?

我在Windows版本上查看了Nginx的代碼。 但我不明白大師是如何與工人分享監聽套接字的。

它在Linux上很直接。 當fork()時,worker繼承master的文件描述。

但是當談到Windows版本時,在CreateProcess()函數中,它將“bInheritHandles”參數字段指定為“0”,這意味着它不會繼承句柄!

那么工人們如何與主人分享聽力套接字?

我確實閱讀了兩天的代碼,只是為了找到這個問題的答案。 但我仍然無法理解。

謝謝!

*這個問題與另一個問題非常相似nginx工作進程如何共享'監聽套接字'但事實並非如此。 因為那個人正在詢問Linux平台上的那個。

它沒有。 相反,在Windows上,每個nginx工作進程都會創建自己的偵聽套接字,並使用它們來接受連接。

由於nginx在偵聽套接字上使用setsockopt(SO_REUSEADDR) ,因此可以在相同的端口上創建偵聽套接字,這樣就可以在Windows上完全重復偵聽套接字。

這些重復的偵聽套接字中只有一個實際上可以正常工作,這里是文檔中列出的Windows的nginx的第一個限制:

雖然可以啟動幾個工人,但其中只有一個工作。

請注意,Windows的nginx“被認為是測試版”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM