2017-05-08 11 views
0

私はHAProxyを動作させようとしているインターネットの深さを精査していますが、私が望むものを達成できるかどうかはわかりません。私はこの次試してみましたHAproxyサブディレクトリ

:ここhttps://www.haproxy.com/blog/howto-write-apache-proxypass-rules-in-haproxy/

は私のシナリオです:私は、私はHAProxyはhttp://backend-ip:8999/でAPP1のルートを持参してくださいhttps://PUBLIC-IP-ADDRESS/app1に行くときのポート8999上でAPP1を実行しているVMを持っています。

私が直面している問題は、初期接続をプロキシするためにHAProxyを取得できることですが、それ以降のすべての要求はデフォルトのバックエンドサーバーのルートに移動します。

frontend www-https 
    bind *:8989 ssl crt /ssl/server.pem 
    log global 
    option httplog 
    reqadd X-Forwarded-Proto:\ https 
    rspadd Strict-Transport-Security:\ max-age=31536000;\ includeSubDomains 
    acl app1 path_beg -i /app1 /app1/ 
    use_backend www-app1 if app1 
    default_backend www-backend 

backend app1 
    option http-server-close 
    option forwardfor 
    reqirep [\:])\ /app1/(.) \1\ /\2 
    acl hdr_location res.hdr(Location) -m found 
    rspirep Location:\ (https?://Public-IP-ADDRESS(:[0-9]+)?)?(/.*) Location:\ /app1\3 if hdr_location 
    server app1 bk.IP-ADDRESS:8999 check 

/app1/に行くが動作するようになりましたが、すべてのリンクが/を指します。どこでもクリックするとhttps://PUBLIC-IP-ADDRESSに戻ります。

ご協力いただきまして誠にありがとうございます。

答えて

0

resirepヘッダーを変更して、行のみを要求することができます。

これは、新しいバージョン1.6以上、それははLUAスクリプトを使用した...しかし、現在(参照http://www.serverphorums.com/read.php?10,1322511など)がないジェネリック(成功した)溶液で(限定的に)可能かもしれません。

https://serverfault.com/questions/789743/possibility-of-rewriting-response-bodies-in-different-webservers-nginx-apacheの回答が最新のようです。

また、公式メーリングリストhttps://www.mail-archive.com/[email protected]/msg25215.htmlは、幻想を残しません。

さらに多くの落とし穴があります - すべての相対(../を含む)と絶対的なバリエーションを扱う多くの正規表現(または非常に複雑なもの)が多数あります。書き換え無し

解決策:(?X-転送パス)/ APP1に

  1. メイクアプリ利用可能 - - あなたは
  2. ビット上記のようにそれを制御している場合、いくつかのヘッダに基づいて<base>を設定します
  3. haproxy
  4. から、私は完全にサブドメインを使用する代わりに、サブディレクトリに同意するが、残念ながらトン
+0

(私はこの1つを選ぶだろう)/app1パスをあきらめ、サブドメインを使用します帽子はオプションではありません。だから、HAiveを落として、代わりにApacheを使って作業してください。しかし、提案のおかげで。 – Justin