1

ほぼ 24 時間頭から離れない問題があり、現時点では解決方法がわかりません。

ここに問題があります: サーバーに 1 つの「メイン」ソケットが必要で、すべての受信データを処理し、PHP を使用して他のクライアントに送信します。その部分は問題ありませんが、ex.example.com などの複数のサブドメインを使用してそのソケットに接続したいと考えています。これの問題は、ソケットが実行されていない限り、そのサブドメインに接続できず、ポートがいっぱいになるだけであり、それを防止しようとしていることです。

最善の解決策は、受信した TCP リクエストを Apache に処理させ、接続しているドメインのデータを保存し、クライアントをメイン ソケットにリダイレクトすることです。メイン ソケットは、受信したデータを処理し、クライアントが受け入れられるとすぐに動作します。

正直なところ、これを行う方法がわかりません。私は何時間も探していますが、私が見つけた唯一のものはそれに近いものでした: Apache - TCP 接続を処理しますが、HTTP 要求は処理しません

しかし、そのスクリプトでは、データ (使用しているドメイン) を保存してメイン ソケットに送信することができません。

これが Apache で実行できるのか、まったく可能なのか、あるいは他の回避策があるのか​​どうかはわかりません。

ありがとうございました :)

4

1 に答える 1

0

サブドメインについて混乱しています。ソケット、TCP、および IP はすべて、名前についてまったく何も知りません。DNS は、そのネットワーク スタックが何年も前から存在するまで発明されませんでした。

したがって、任意の数のドメインをマシン上の単一の「ソケット」ポートに向けることができます。

Apache は、着信接続の宛先 IP アドレス (1) または HTTP/1.1 の「ホスト」ヘッダー (2) に基づいて、着信要求をさまざまな「Web スペース」 (つまり、仮想ホスト) にルーティングできます。前者は仮想ホストの使用方法でしたが、現在ではほとんどの人が後者を使用しています。

(1) マシンは単一のネットワーク カードでも複数の IP アドレスを持つことができますが、ポートはそのマシン上の任意のプロトコルに固有です。異なるドメインを異なるアドレスにポイントし、Web サーバーでリバース マッピングを定義して、リクエストがどのように開始されたかを識別できるようにします。

(2) 「ホスト」の値は、ブラウザに与えられた DNS 名です。この値は Web サーバーに明示的に渡されるため、そのサーバーは #1 のようなトリックに依存する必要はありません。

于 2012-11-13T15:14:39.203 に答える