Skip to content

Instantly share code, notes, and snippets.

@ralex
Forked from meineerde/haproxy_1_5.cnf
Created January 8, 2018 14:20
Show Gist options
  • Save ralex/d6938146d3c86f30249a5d4c35731530 to your computer and use it in GitHub Desktop.
Save ralex/d6938146d3c86f30249a5d4c35731530 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