2016-10-07 12 views
1

Windows版Nginxのコードを見ています。 しかし、私はマスターが労働者とソケットを共有する方法を理解していません。Windowsプラットフォームでは、nginxマスタープロセスがワーカーにホールソケットをどのように共有するのですか?

Linuxではまったりです。 fork()を実行すると、ワーカーはマスタからファイル記述を継承します。

Windows版の場合、CreateProcess()関数では、 "bInheritHandles"引数フィールドを "0"と指定します。つまり、ハンドルを継承しません。

それでは、労働者がマスターとリスニングソケットを共有する方法は?

私はこの質問に対する答えを見つけるのに2日間コードを読んだ。 しかし、私はまだそれを理解することはできません。

ありがとうございます!

*この質問は別のものと非常によく似ていますHow does nginx worker process share the 'listen socket' しかし、そうではありません。それはLinuxプラットフォーム上のものを求めているからです。

答えて

0

これはありません。代わりに、Windowsでは各nginxワーカープロセスが独自のリスニングソケットを作成し、それらを使用して接続を受け入れます。

リスニングソケットでnginxがsetsockopt(SO_REUSEADDR)を使用するため、同じポートでリスニングソケットを作成することができます。これにより、Windows上で完全に重複するリスニングソケットが可能になります。

つだけこれらの重複リスニングソケットのは、実際にかかわらず働き、そしてここにthe documentationに記載されているWindows用のnginxの最初の限界が来る:

いくつかの労働者は、それらを1つだけ起動することができますが、実際にいずれかを行います作業。

注意だけでなく、Windows用のものnginxのは、「ベータバージョンであると考えられています」。

+0

明確な説明をいただきありがとうございます!それは多くの助けになります! –

関連する問題