この質問が以前にリクエストされた場合はお詫び申し上げます。まだ適切な解決策が見つからなかったので…はい。
特定のドメイン「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