2016-08-02 9 views
0

特定のhttp URLを最初に同等のhttpsにリダイレクトしてから、まったく別のhttps URLにリダイレクトする必要があります。なぜ元のhttpを最終的なhttps URL、これはクライアントが望むものであり、クライアントは常に正しいです!)。また、元のhttpsを別のhttpsにリダイレクトする必要があります。haproxyスキームとロケーションの両方を一緒にリダイレクトする

だから、私は必要なもの=>https://foo.bar.comhttp://foo.bar.comをリダイレクトして、=>https://another.foobar.comhttps://foo.bar.comする機能であるだけでなく、=>https://another.foobar.comhttps://foo.bar.comをリダイレクトします。

現在ちょうどhttps://foo.bar.com =>https://another.foobar.comをリダイレクトする私は、この使用しています:ポート443上の最初のバインドで

acl is_new_portal hdr(host) -i foo.bar.com 
redirect location https://another.foobar.com code 302 if is_new_portal 

を、と私は私が使用するhttpをhttpsにリダイレクトするために知っている:

redirect scheme https code 302 if !{ ssl_fc } 

(最終的にanother.foobar.comが削除されるため、301ではなくコード302が使用されるため、リダイレクトはクライアントのブラウザに永続的にキャッシュされません)

しかし、私は両方の再配置を行うことができる必要があり、私はどのように2つを組み合わせるか分からないのですか?

答えて

0

問題がバインディングまたはACLに関連しているかどうかはわかりません。あなたはすでにあなたの質問に対するすべての答えを持っています。

frontend main 
    bind :80 
    bind :443 ssl crt yourCertFile 

    acl is_new_portal hdr(host) -i foo.bar.com 
    redirect scheme https code 302 if !{ ssl_fc } is_new_portal 
    redirect location https://another.foobar.com code 302 if { ssl_fc } is_new_portal 

    http-response set-header Strict-Transport-Security max-age=31536000;\ includeSubDomains;\ preload; if { ssl_fc } 

ifの後のACL間のスペースは、ANDとして解釈されます。ホストはfoo.bar.com AND NOTホストがfoo.bar.comとSSL を使用している場合は、SSL

  • を使用してhttps://another.foobar.comにリダイレクトされたIF

    • httpsにリダイレクト:だからあなたのような何かを取得します
  • +0

    リダイレクトが両方とも実行されるかどうかはわかりませんでしたが、提案のおかげです。 Strict-Transport-Security: "max-age = 31536000"の設定で作業する必要もありますが、私は同じフロントエンドに追加することができます。 – HelenH

    +0

    @HelenHうん、私はちょうど私の答えにそれを追加しました。私はあなたのケースでは 'if {ssl_fc}'が必要であるとは確信していません – ITChap

    関連する問題