1

http://mycompany.com/external/*外部向けをリダイレクト/プロキシするようにリダイレクトするソリューションを探していhttp://internal-host:1234/internal/* ます(アスタリスクはワイルドカードとして使用されます)

上記の文だけでは不十分だと思いますので、詳細を以下に示します。

私のイントラネットには、いくつかのサーバーがあります (名前、アドレス、ポート、およびコンテキスト パスは、わかりやすくするために明らかに構成されています)。

  1. アドレスで実行中の HRServer10.10.10.10:1010/hr
  2. アドレスで実行中のメールサーバー20.20.20.20:2020/mail

私のシステムは、IP 78.78.78.78 からのみインターネットからアクセスできます。ここでの制約は、1 つのポート (たとえば 8080) しか使用できないことです。言い換えれば、私の問題の解決策が何であれ、外部アドレスは78.78.78.78:8080

私がする必要があるのは、このポートを介して HR サービスとメール サービスの両方を公開することです。最初に頭に浮かんだのは、2 つの単純なポートレット (または 2 つのフレームを持つ HTML) を作成し、それらを 78.78.78.78:8080/ の単純な Web ページに埋め込むことでした。たとえば、インターネットからは見えない 10.10.10.10:1010/hr へのブラウザ。そこで私の次の考えは、ディスパッチ機能を持つリバース プロキシを見つけようということでした。それから私は作ることができます

  • 78.78.78.78:8080/hr内部に「リダイレクト」する10.10.10.10:1010/hr
  • 78.78.78.78:8080/mail内部に「リダイレクト」する20.20.20.20:2020/mail

20.20.20.20:2020/mail/unreadまた、メールサーバーの未読メッセージが未読メッセージに表示されているとしたら、インターネットからもアクセスできると思います。大まかに言えば - 私は期待しています

  • 78.78.78.78:8080/mail/* 内部にリダイレクトし20.20.20.20:2020/mail/ます * (アスタリスクはワイルドカードとして使用されます)

ここで明らかなことを見逃していると本当に感じていますが、正直なところ、いくつかのプロキシの調査にかなりの時間を費やしましたが、答えが見つかりませんでした. 間違った言葉か何かを探しているのかもしれませんが、外部パスを別の内部パスにディスパッチするように構成できるリバース プロキシが見つかりませんでした。

答えが Apache mod_proxy である場合は、探しているパラメータ名についてのヒントを教えてください。最後に - 私は FreeBSD OS でシンを実行しようとしていますが、これは強い要件ではありません (他の *nix OS も問題ありません) ありがとう!

4

1 に答える 1

1

かなり時間がかかりましたが、答えは次のとおりです。

良い解決策はnginx (「エンジン X」と発音) です。

に来るすべてのトラフィックを再ルーティングするに https://mycompany.com/external/*http://internal-host:1234/internal/*(アスタリスクはワイルドカードとして使用されます)、次の構成が必要です。

location ~ ^/internal/ {
   rewrite ^/internal/(.*)$   /$1 break;
   proxy_pass     http://internal-host:1234;

}

このアプローチは、人事ポータル、メールなど、他のすべてのアドレスにも使用できます。

最後に、注意を喚起するために、次の構成は機能しません。

location ~ ^/internal/(.*)$ {
  proxy_pass     http://internal-host:1234/internal/$1;
}

正規表現が使用されている場合、nginxは常にURI全体をproxypassすることが判明したため、ルールは上記のものでなければなりません(これはurl-rewriteを行います)。

于 2013-03-07T13:57:09.527 に答える