Skip to content

Instantly share code, notes, and snippets.

@ldesiqueira
Forked from meineerde/haproxy_1_5.cnf
Created November 4, 2016 21:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ldesiqueira/6e70341d44d1a1d1d2113d79773225e7 to your computer and use it in GitHub Desktop.
Save ldesiqueira/6e70341d44d1a1d1d2113d79773225e7 to your computer and use it in GitHub Desktop.
HAPROXY: Redirect all requests to a URL starting with /foo to /bar while retaining everything following it
# In HAProxy 1.5, we have to jump through some hops to accomplish a rewrite of a request's path...
# We use a temporary header to build our new path from the existing one in the request
# and then directly perform a redirect
# 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 /foo }
# Change the X-REWRITE header to contain out new path
http-request replace-header X-REWRITE ^/foo(/.*)?$ /bar\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 }
# In HAProxy 1.6, there is the regsub filter we can use here
http-request redirect code 301 location http://%[hdr(host)]%[url,regsub(^/foo,/bar,)] if { path_beg /foo }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment