質問: 1つのパブリックipの背後にある複数のwebサーバー 長年の読者の初めてのポスター(彼)。これが私のジレンマです。私は何人かの友人のために自宅で3つのサイトをホストしていますが、大きなものは何もありません。すべてwordpressサイトです。vmwareworkstationで実行しています。大量のramを用意しているので、心配する必要はありません。リソースフロント。サイト#2を構築しているときに、「crap!...ルーターを通過してこれらをルーティングするにはどうすればよいですか?」と気づきました。異なるvm上にあります。1/ 3はそれほど重要なサイトではありませんが、何かが発生した場合は、すべてを同時にダウンさせたくはありません。私は一般的なlinksysルーターを持っています(ひどい新しいスマートwifiを備えています)。男私はファームウェアを良いものに変更する必要がありますが、それは別の日です。つまり、1つのパブリックip、3つのvmはすべて、一意の内部ip、つまり192..1/2/3を備えています。ルーターは、同じポート(80)を使用して複数のipにポート転送することを許可しません。やることがたくさんある場合は、弾丸を噛んで同じvm)に移動し、異なるサイトをvhostしますが、私の考えは別のvmを使用することでした。仮想ルーター。 pfsense、m0n0wallのようなルーター/ファイアウォールvmを考えてみてください。シンプルで簡単に実行できるものを探していますが、ポート80の要求を受け取ることで、vhostのように動作する必要があると思います。次に、ルーターを使用して、ホストヘッダーを使用してwebサーバーを保持している3つのvmにトラフィックを分散します(私は思います)。誰か提案、より良い方法などがありますか?事前に大いに感謝し、それらをすべて1つのvm屋根の下に置くと、これは即座に解決されます。私の場合、vmの分離はそれよりも優先されます。しかし、非常にオープンな考えです。乾杯。
回答: ルーターは、同じポート(80)を使用して複数のipにポート転送することを許可しません。 ちなみに、これは標準のtcp/ipでは不可能です。プログラム、つまりプロキシが必要です。ポートでリクエストを受け入れ、リクエストを確認し、それに応じてリクエストをシャントします。apacheおよびその他のwebサーバーには、着信トラフィックを「分割」するために使用できる「リバースプロキシ」機能があります。リバースプロキシは、特定のwebパス、つまり「yourdomain/directory1」の要求を別のwebサーバーにスローし、そのwebサーバーからの応答を元のクライアントにスローするようにapacheに指示します。ただし、このwebサーバー(phpなど)でアプリケーションを実行している場合は、外部に面したurlが異なるため、設定を変更する必要がある場合があることに注意してください。リンクを正しく生成できるように、phpアプリケーションに「yourdomain」ではなく「yourdomain/directory1」にあることを通知する必要がある場合があります。バックエンドサーバーからのトラフィックを書き換えるようにapacheに指示することができます。クライアントに返す前に、これは難しいので、可能であれば避けたいと思います。javascriptでリンクを生成するアプリケーションは特に問題になる可能性があるため、すべてのwebアプリケーションが簡単に「逆プロキシ可能」であるとは限りません。したがって、apacheを4番目の「フロントエンド」にインストールしますvm-着信tcp 80をこのvmに転送します。これも確認する必要がありますvmは、「仮想ネットワーク」上の他のvmに到達できます。次に、「フロントエンド」vmで、webサイトごとに個別のリバースプロキシを設定できます。 ここ は、proxypassおよびproxypassreverseディレクティブを使用した、関連するapache構成の詳細です。また、パフォーマンスを向上させるために、精巧にキャッシュを実装することもできます。