web-dev-qa-db-ja.com

haproxyを使用して書き換えられたURLをリダイレクトする

Ubuntu 14.04でのhaproxyバージョン1.4.24の使用

Haproxyを使用して、有効ではなくなったURLを新しい同等のものに書き換えてリダイレクトしたいと思います。私はすでにリバースプロキシおよびロードバランサーとしてhaproxyを使用しています。リライトは正しく機能していますが、リダイレクトしようとすると、リダイレクトがないか、リダイレクトループになります。このためのテクニックはフロントエンドでプレフィックスを使用してURLを書き換えてリダイレクトすることであるといくつかの場所で読みましたが、うまくいきません。任意の助けいただければ幸いです。ありがとう。

global
    log 127.0.0.1 local0
    log 127.0.0.1 local1 notice
    maxconn 4096
    user haproxy
    group haproxy
    spread-checks 0

defaults
    log global
    mode http
    option httplog
    option dontlognull
    retries 3
    timeout queue 20000
    timeout client 50000
    timeout connect 5000
    timeout server 50000

frontend haproxy-0-80
    bind 0.0.0.0:80
    default_backend haproxy_service
    acl old_url path_beg -i /post
    # The below doesn't appear to have any effect
    reqrep ^([^\ :]*)\ /post/\d+/(.+)/?     \1\ /\2
    redirect prefix http://10.0.3.10 code 301 if old_url

backend haproxy_service
    balance leastconn
    cookie SRVNAME insert
    # The below properly handles the rewrite
    reqrep ^([^\ :]*)\ /post/\d+/(.+)/?     \1\ /\2
    server ghost-0-2368 10.0.3.220:2368 maxconn 100 cookie S0 check
6
hatch

結局のところ、私は動作する構成に非常に近かった。

リダイレクト行をredirect prefix / code 301 if old_urlを読み取るように変更すると、期待どおりに動作しました。

私は問題をもう少し詳しく説明するブログ投稿を書きました: https://fromanegg.com/post/2014/12/05/how-to-rewrite-and-redirect-with-haproxy/

8
hatch