ドメインに基づいて各ポートを転送します。

ドメインに基づいて各ポートを転送します。

友人と私は私たちのために小さなウェブサイトをホストしています。現在、すべてのページはApache2の仮想ホストを介して1つのサーバーで実行されています。私たちは、SSHアクセス、FTPサーバーなど、いくつかの点を含む各サイトのサーバーを作成したいと思います。

私はそれを試してみて、次の例のようにProxyPassを見つけました。

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ServerName example.com
        ServerAlias www.example.com

        ProxyRequests Off
        ProxyPass / http://192.168.2.141/
        ProxyPassReverse / http://192.168.2.141/

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

正常に動作しているようですが、httpプロトコルでのみ機能します。また、ssh、ftpなどを渡したいです。

誰でもどんなアイデアがありますか?

答え1

残念ながら、あなたが使用している名前ベースの仮想ホスティングapacheこれは、クライアントホスト名のHTTPヘッダーを読み取り、<VirtualHost>その値に基づいて使用するブロックを決定するために機能します。あなたのブロックは、要求を別のサーバーにプロキシするように指示します。

sshまたは同様の施設はありませんftp

最も近い方法は、iptablesポートから別のサーバーにパケットを転送することです。

# iptables - nat -A PREROUTING -p tcp --dport 1022 -j DNAT --to-destination 192.168.2.141:22
# sysctl -w net.ipv4.ip_forward=1

その後、サーバーのポート1022でリッスンし、192.168.2.141のポート22にトラフィックを転送します。その後、あなた(またはあなたの友人)がssh [username@]192.168.2.141 -p 1022サーバーにアクセスする必要があります。

別のiptables回線を追加して、ポート 1023 を別のサーバーのポート 22 に転送できます。おそらくあなたも読んでみるとftp同じことができます。これサーバー障害の問題。

関連情報