NATルーターを介して異なるホスト名を異なる内部IPに転送する

NATルーターを介して異なるホスト名を異なる内部IPに転送する

パブリック IP アドレスが 1 つ、ルーターが 1 台、ルーターの背後に複数のサーバーがあります。

異なるドメイン (すべて HTTP を使用) をルーター経由で異なるサーバーに転送したいと思います。

例えば:

example1.com      =>  192.168.0.110
example2.com      =>  192.168.0.120
foo.example2.com  =>  192.168.0.130
bar.example2.com  =>  192.168.0.140

これはポート転送を使用して実現できることは理解していますが、すべてのホストがポート 80 で実行されている必要があります。

IP マスカレードに関する情報をいくつか見つけましたが、理解するのが難しく、それが私が求めているものなのかどうかわかりません。

私が見つけた別の解決策は、すべてのトラフィックをリバース プロキシ サーバーに転送し、リクエストを適切なサーバーに転送することです。iptables についてはどうでしょうか?

Billion 7404 VNPX ルーターを使用しています。このルーターにはこれを実現できる機能がありますか?

これらが唯一の選択肢でしょうか? 何かを完全に見逃してしまったのでしょうか? 他の選択肢よりも推奨されるものはありますか?

検索してみましたが、正しいキーワードがヒットしていないようです。

答え1

最善の解決策は、HTTP リバース プロキシを使用することです。これには、次のものを使用できます。

私たちは mod_proxy で apache を使用していますが、pound を使用することを考えております。

ハードウェア アプライアンスとして、Cisco Content Service Switch を使用できます。参照:http://www.cisco.com/en/US/products/hw/contnetw/ps792/index.html

答え2

私にはあるアイデアがあり、それについて誰かがフィードバックを持っているかどうか知りたいです。

リバース プロキシのアイデアを使用すれば、この問題は非常に簡単に解決できると思います。他のサーバーではすでに Nginx を使用しているため、リバース プロキシにはこのサーバーを選択します。

ルーターでは、ポート 80 のすべての着信接続をリバース プロキシ サーバーに転送します。次の構成ファイルを使用して、このサーバーで Nginx を実行します。

server {
    listen *:80;
    location / {
        proxy_pass    http://$host;
    }
}

これは、リクエストを同じホストにプロキシしているように見えます。しかし、ここでの秘訣は、/etc/hosts ファイルですべてのドメインを内部 IP にマップすることです。

182.168.0.110 example1.com
182.168.0.120 example2.com
182.168.0.130 foo.example2.com
182.168.0.140 bar.example2.com

したがって、リバースプロキシサーバーは要求されたホストを同じホストにルーティングしますが、この時点ではすべきローカル ホスト ファイルを検索し、それを内部 IP アドレスにマップします。これは、Nginx 構成ファイルを「設定して忘れる」こともできることを意味します。

潜在的な問題は、ローカル ホスト名が設定されていない場合、リバース プロキシが要求をインターネットに送り返すことです。ただし、NAT によって、これが無限ループに陥るのを防ぐことができると思います。

この解決策は頭の中でも紙の上でも機能しているように見えますが、しばらくはこれを設定できません。

これが機能しない理由がわかる人はいますか?

ありがとう。

関連情報