12

URLの一部に応じて、HAProxyがリクエストのルーティングにどのように役立つかをお聞きしたいと思います。

セットアップの概要を説明するために、HAProxyマシンと2つのバックエンドがあります。

  • IIS Webサイト(メインサイト)
  • NGINX(サブサイト)に関するWordpressブログ

ユースケース:

URLに応じてリクエストをルーティングする予定です。

  • www.website.com/lang/index.aspx->メインサイト
  • www.website.com/lang/blog/articlexx->ブログサブサイト

ブログのアクセスURLは「/server/ blog / lang / articlexx」なので、元のクライアントリクエストをその形式に書き換える必要があります。つまり、基本的に「blog」と「lang」が切り替わります。

構成ドキュメントとネット上のいくつかの投稿をどのように理解したかから、リクエストHTTPヘッダーをバックエンドに渡す前に、reqrep/reqirepを使用して変更することができました。そうであれば、この構成は機能するはずです。

frontend vFrontLiner
    bind            x.x.x.x:x
    mode            http
    option          httpclose
    default_backend iis_website

    # the switch: x/lang/blog -? x/blog/lang
    reqirep ^/(.*)/(blog)/(.*) /if\2/\1/\3

    acl blog path_beg -i /lang/blog/

    use_backend blog_website if blog


backend blog_website
    mode    http
    option  httpclose
    cookie  xxblogxx insert indirect nocache
    server  BLOG1 x.x.x.x:80 cookie s1 check inter 5s rise 2 fall 3
    server  BLOG2 x.x.x.x:80 cookie s2 check inter 5s rise 2 fall 3 backup

問題: blog_websiteバックエンドが受信するリクエストは、元のURL「x / lang/blog」のままです。

正規表現の部分で何かを見逃したかもしれませんが、私の主な関心事は、私の理解が正しいかどうか、そもそもreqirepを使用しないかどうかです。助けていただければ幸いです。

どうもありがとう。

4

2 に答える 2

9

正規表現が間違っています。サーバーがリクエストパスにあると想定しています。ヘッダーのリクエストパスを一致させるには、次のような正規表現を使用します。

reqrep ^([^\ ]*)\ /lang/blog/(.*) \1\ /blog/lang/\2

reqirepも使用できますが、これはサーバーが実際に機能する場合にのみ役立ちます/BLog/lAnG/

于 2012-01-31T16:13:45.377 に答える
0

それでも機能しない場合は、安定バージョンに切り替えてください。たとえば、現時点では、1.5devでreqrepが壊れています。修正するために1.4に切り替えました。

于 2012-12-13T04:34:34.747 に答える