友人と私は私たちのために小さなウェブサイトをホストしています。現在、すべてのページは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
同じことができます。これサーバー障害の問題。