サブドメインを特定のポートに転送する方法は?

サブドメインを特定のポートに転送する方法は?

この質問が以前にリクエストされた場合はお詫び申し上げます。まだ適切な解決策が見つからなかったので…はい。

特定のドメイン「example.com」にアクセスしたときに正しく動作させたいと思います。つまり、ポート80に進み、期待どおりにApacheと対話する必要があります。

他のサブドメイン「mc.example.com」にアクセスするときは、Apache Webサーバーにアクセスしたくありません。ポート4096でリッスンしながら他のプログラムとやり取りしたいです。したがって、「mc.example.com」にアクセスすると、「example.com:4096」と同じ/類似の機能を持つようになります。このサービスはMinecraftです。

3番目のサブドメイン「vpn.example.com」にアクセスするときは、ポート687でリッスンしながら他のサービスと対話したいと思います。サービスはopenVPNです

これを行う簡単な方法はありますか?それでは何ですか? ApacheでVirtualBoxを設定することが含まれていますか(試してみましたが悲惨に失敗しましたxD)。それともipTablesを使用して実行できますか?それが意味があるなら、私は32ビットCentos 5.5を実行しています。 (おそらくCentosの最新バージョンです。)

答え1

何もできません。リモートコンピュータがTCP接続を開くと、接続するIPアドレスとポート番号のみが通知されます。 IPアドレスを取得するためにDNSがどのホスト名を見つけたかを教えてくれません。 (名前ベースの仮想ホストはHost:HTTPプロトコルの一部として送信されるヘッダーを使用しますが、これは接続が開かれた後に送信されます。)

ただし、他のサービスにアクセスする場合は、リモートコンピュータが別のポート番号に接続するように要求し、そのポート番号に基づいてルーティングできる必要があります。

Host:これらのプログラムがすべてHTTPを使用している場合は、ヘッダーに基づいて適切なサーバーに要求をプロキシできる必要があります。

答え2

これが古い質問であることを知っていますが、おそらく解決策があります。 vhost@workの設定が見つかりました。仮想ホスト構成でこれを試してみてください。

誰でもこれを確認できますか?

<VirtualHost *:80>
    ServerName sub.domain.com
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyRequests           Off
    ProxyPass               /       http://sub.domain.com:12345/
    ProxyPassReverse        /       http://sub.domain.com:12345/

   #... etc

関連情報