私のネットワーク アダプターは 3 つの IP4 アドレスを使用しています:
- 1つの
- b
- c
IISは2つのサイトAとBを実行し、バインディングは
- A>a:80
- B>b:80
- B>b:443
次のように、IIS を a と b をリッスンするように構成しました。
- netsh http add iplisten ipaddress=a:80
- netsh http add iplisten ipaddress=b:80
- netsh http add iplisten ipaddress=b:443
netsh http show iplisten コマンドは次を表示します:
- 1つの
- b
Google Go Web サービスは IP4 アドレスで実行されます:
- c
状況: この構成はWindows 2008 R2では問題なく動作します。Windows 2012 R2では最初は動作するように見えますが、サーバーを再起動するとGoogle Go Webサービスは動作しますが、サイトAとBは停止していますただし、手動で起動することができ、3 つのサイトすべてが再び稼働します。
アプローチ1: サイトAとBは稼働しています。Google Go Webサービスを無効にしてサービスを再起動します。しかし、サイトAとBはまだ止まっている再起動後。
アプローチ2: (Go Webサービスはまだ無効です) IISがリッスンするためのグローバルIPアドレス0.0.0.0を追加します。netssh http show iplistenは0.0.0.0、a、bを表示します。再起動後、サイトAとBは引き続き実行されます。ただし、0.0.0.0でリッスンすると、IPとポートが無効になるため、Google Go Webサービスの実行が妨げられます。現在ブロックされていますIIS によって。
質問: IIS がサイトを起動するのに 0.0.0.0 IP アドレスが必要なのはなぜですか? これは Windows Server 2012 R2 の欠陥のように見えます。IIS8.5 では他の欠陥も見つかったので、驚くことではありません。たとえば、標準 Web サイトの命名に文字 ? を使用できなくなりました。これは、一部の ISAPI モジュールで問題になります (xy.dll は記述できますが、xy.dll?start は記述できません)。3 つのサイトを同時に実行するにはどうすればよいですか? ご支援ありがとうございます。
答え1
システムの起動後にバッチ スクリプトですべてを起動するだけで十分でしょうか。最もエレガントな解決策ではないかもしれませんが、機能するはずです。