Haproxy

Haproxy 更改部分 url

  • July 2, 2021

我有一個重命名的應用程序,我希望 Haproxy 重定向到正確的路徑,同時保留請求參數

這就是我所擁有的:

acl old_name path_dir -i /old_name
  http-request set-path /new_name/%[query] if old_name

我希望它從

www.site.com/old_name/Default.aspx?Id=123

www.site.com/new_name/Default.aspx?Id=123 but this is not working. 

使用 HAProxy 1.5:使用臨時標頭從請求中的現有路徑建構新路徑,然後直接執行重定向

# Clean the request and remove any existing header named X-Rewrite
http-request del-header X-REWRITE

# Copy the full request URL into X-Rewrite unchanged
http-request add-header X-REWRITE %[url] if { path_beg /old_path }

# Change the X-REWRITE header to contain out new path
http-request replace-header X-REWRITE ^/old_path(/.*)?$ /new_path\1 if { hdr_cnt(X-REWRITE) gt 0 }

# Perform the 301 redirect
http-request redirect code 301 location http://%[hdr(host)]%[hdr(X-REWRITE)] if { hdr_cnt(X-REWRITE) gt 0 }

在 HAProxy 1.6 中,使用 regsub 過濾器

http-request redirect code 301 location http://%[hdr(host)]%[url,regsub(^/old_path,/new_path,)] if { path_beg /old_path }

其他有用的配置片段中的來源

有關regsub 關鍵字的更多資訊,請參閱HAProxy 文件。

引用自:https://serverfault.com/questions/799997