URL 内のドメインに応じて、Web リクエストをプライベート ネットワークにルーティングするにはどうすればよいですか?

URL 内のドメインに応じて、Web リクエストをプライベート ネットワークにルーティングするにはどうすればよいですか?

シナリオ:

IP の数が限られているため、複数のドメインが同じ IP アドレスに解決されます。ただし、これらのドメインはすべて同じ Web サーバー、VM、または専用マシンで実行されるわけではありません。したがって、URL 内のドメインの条件に基づいて、プライベート ネットワークへのエントリ ポイントでドメインを適切な場所にルーティングしたいと思います。

これどうやってするの?

答え1

ほとんどのルーター/ファイアウォールでは、特定のポートに基づいてトラフィックをリダイレクトできます。たとえば、すべての SMTP トラフィック (ポート 25) は 192.168.1.1 にリダイレクトされます。

しかし、トラフィックを処理するサーバーが複数ある場合(ドメインごとに1つのサーバー)、リバースプロキシのようなものをインストールする必要があります(nginxは、HTTP、IMAP、POP3 でこれをサポートしています。たとえば、ポート 80 へのすべてのトラフィックは192.168.1.2nginx を実行する にリダイレクトされ、ホスト名に応じて または にリダイレクトされlocalhostます192.168.1.4

答え2

質問を完全に理解できたかどうかわかりません。理解できたとすれば、NAT の背後で HTTP サーバーとして実行されているマシンが複数あるということですね。何らかのリクエストが到着したら、それをサーバーの 1 つに転送したいということですね。

Apache と mod_rewrite を使用している場合は、次の方法で取得できる可能性があります。

  1. http://www.linuxquestions.org/questions/linux-networking-3/apache-forward-request-to-another-box-264864/

  2. http://www.sematopia.com/2007/09/apache-forwarding-requests-to-another-server/

乾杯。

答え3

私は似たようなことをプロキシパスApache の mod_proxy の下のディレクティブ。

まず、名前ベースの仮想ホスティング異なるドメインが同じ IP を使用して異なるサイトをホストできるようにするには、内部 Web サーバーに関連付けられたドメインに対して次のような構成を使用します。

# Within your VirtualHost definition
ServerName somedomain.com
ProxyPass / http://10.0.1.42/
ProxyPassReverse / http://10.0.1.42/

http://somedomain.comこれにより、すべてのリクエストがでホストされている内部サイトに透過的にプロキシされるようになりますhttp://10.0.1.42

HTH

答え4

しばらく前に同じものを探していました。結局実行できませんでしたが、うまくいくかもしれないと思ったのがこれです。

_proxy モジュールを使用しmodnoproxyディレクティブを使用します。

プロキシサーバを再起動すると、プロキシサーバは再起動されます。

関連情報