質問: 異なるipアドレスを使用するポート80上のnodejsとapache-異なるipのポート80を使用するように構成されている場合でも、apacheはポート80をクリアする必要があります 127.0.0.2:80のポート80でnode.jsアプリを使用していますserver.listen(80, '127.0.0.2', function() {... そして、another ip address、say 127.0.0.3:80のポート80でapacheを使用したいので、これを持っています私のhttpd.confでlisten 127.0.0.3:80 servername 127.0.0.3:80 しかし、それは私にエラーを与えます apacheは、それ自体がリッスンするようにプログラムされているipのポート80に関係なく、ランダムなポート80を気にするのはなぜですか。関係する限り、127.0.0.3:80のポート80はまだ空いています。私も先に進んで、他のipシリーズ(192.xxx、122.xxx)でこれを試しましたが、apacheはポート80を解放し、完全に停止することを望んでいます。奇妙なことに、最初にapacheを起動すると、問題なく起動します。その後、上記の同じ構成でnode.jsを起動することもでき、どちらも正常に動作します。しかし、貴重なapacheは、その高さが最初に開始される前に、何らかの理由でipアドレスのポート80をリッスンする人を嫌います。アプリケーションが127.0.0.2:80でリッスンしている場合、そのipのポート80のみがビジーであり、他のipのポート80はまだ空いているはずである127.0.0.3:80と誤解していますか?それとも、誤動作しているのはapacheですか?
回答: この回答の最後に、提案された基本的な解決策があることに注意してください。httpはデフォルトでtcpを使用し、udpは単一のポートにバインドする複数のプログラムをサポートしますが、tcpは通常サポートしません。したがって、このインスタンスでは、ポート80は特定のipに対して空いていないように見えます。これは、ローカルマシン上で一度にそのipでポート80(tcp)を使用するプログラムが1つしかない可能性が高いためです。個別のループバックipに関しては、全体127.x.x.xネットブロックがローカルループバック用に予約されていることに注意してください。したがって、127.0.0.1は127.0.0.2(または127.0.0.3または127.127.127.127など)と同じコンピューター(つまりローカルホスト)を指します。また、「実際の」ip(つまり、個別の実際のnicまたは仮想nicを識別するip)ではなく127.x.x.xループバックアドレスを使用しているため、2番目のipを開始すると、特定のipを持つポート80が別のアプリケーションによってすでに使用されている可能性があります。 1。はい、apacheにローカルループバックipを使用して仮想ホスティングを実行させることができます(つまり、127.0.0.1と127.0.0.2は異なるページを返すことができます)が、apacheプロセスはデフォルトでは、引き続きグローバルにポート80(tcp)に関連付けられています。 奇妙なことに、最初にapacheを起動すると、問題なく起動します。その後、上記の同じ構成でnode.jsを起動することもでき、どちらも正常に動作します。 ここで「正常に動作している」とは何を指しているのかわかりませんが、apacheを起動した後、ポート80でnode.js http-serverを起動しようとしました( npm install http-server -g ) 、127.0.0.4などのアドレスを指定してもエラーが発生しました。 設定ファイルで、apacheが特に127.0.0.1:80をリッスンしていて、http-serverが127.0.0.4:80をリッスンしていることを確認する必要がありました。 apacheにlisten 80があった場合、http-serverが失敗しました。 apache自体にとっても、プロセスごとに1つのtcp ip /ポートの組み合わせのみという原則の観点からも、apacheが起動を拒否することは完全に正常です。ソリューションこの問題の簡単な解決策は、同じマシンで複数のnicを実行することです(それぞれに固有のipがあります)。このようにして、各nicは独自のポート80バインディングを持つことができます(ip +ポート=完全な宛先アドレス)。もう1つの可能性は、nicの「仮想インターフェイス」を試すことです(同じnicに2つの「仮想」ipを与えることができます)。参照 スタックオーバーフロー-2つのアプリケーションが同じポートをリッスンできますか?