社内でホストされている共通のURLの下で、オンプレミスとオフサイトのいくつかのWebアプリケーションを統合する必要があります。オンプレミスアプリケーションはhaproxyと同じデータセンターにありますが、haproxyが実行されているサーバーには直接インターネットアクセスがないため、オフサイトアプリケーションにはhttpプロキシ経由でのみアクセスできます。したがって、httpインターネットプロキシを使用する必要があります。SOCKSもオプションになる可能性があります。
バックエンドにはプロキシ経由でのみ到達できることをhaproxyに伝えるにはどうすればよいですか?私はむしろnot socksify/proxifier/proxychains/tsocks/...のような追加のコンポーネントを使用します。これは追加のオーバーヘッドを導入するためです。
この図は、セットアップに関連するコンポーネントを示しています。
これをマシンで実行するとインターネットに直接接続この構成を使用でき、問題なく動作します。
frontend main
bind *:8000
acl is_extweb1 path_beg -i /policies
acl is_extweb2 path_beg -i /produkte
use_backend externalweb1 if is_extweb1
use_backend externalweb2 if is_extweb2
backend externalweb1
server static www.google.com:80 check
backend externalweb2
server static www.gmx.net:80 check
(明らかに、これらは私が話しているURLではありません。これは単なる例です)
Haproxyは、外部アプリケーションをチェックして、トラフィックをそれらにルーティングすることができます。
私が働いている会社の安全な環境では、プロキシを使用する必要があり、haproxyは外部アプリケーションに接続できません。共通のhttpページ/ブラウザを介してアクセスを提供しながら、haproxyがhttpプロキシの背後にある外部Webアプリケーションサーバーを使用できるようにするにはどうすればよいですか(認証は不要)。
私はそれを機能させることに興味をそそられましたが、haproxyのドキュメントには何も見つからなかったので、少しグーグルで検索したところ、nginxうまくいくかもしれませんが、私にとってはうまくいきませんでした。もう少しグーグルした後、Apache動作します。
ここに重要な部分があります:
Listen 80
SSLProxyEngine on
ProxyPass /example/ https://www.example.com/
ProxyPassReverse /example/ https://www.example.com/
ProxyRemote https://www.example.com/ http://corporateproxy:port
ProxyPass /google/ https://www.google.com/
ProxyPassReverse /google/ https://www.google.com/
ProxyRemote https://www.google.com/ http://corporateproxy:port
この構成をnginx、さらにはhaproxyに変換する方法があるはずだと確信しています...時間を見つけることができれば、答えを自分の発見で更新します。
apacheが機能するためには、いくつかのモジュールも有効にする必要があります。githubリポジトリを、基本的なDocker構成で紹介します。完全に機能する構成を確認するには、それを自由に見てください。
アイデアとして、これにデリゲート( http://delegate.org/documents/ )を使用するのはどうですか。
haproxy -> delegate -f -vv -P127.0.0.1:8081 PROXY=<your-proxy>
http://delegate.org/delegate/Manual.shtml?PROXY
私はそれがそれほどエレガントではないことを知っていますが、それはうまくいくかもしれません。
私はこのセットアップを地元のイカとこのカールコールでテストしました
echo 'GET http://www.php.net/' |curl -v telnet://127.0.0.1:8081
Curl呼び出しは、haproxytcp呼び出しをシミュレートします。