Quantcast
Channel: HAProxy community - Latest topics
Viewing all articles
Browse latest Browse all 4849

HAProxy URL rewrite question/issue …

$
0
0

HAProxy version: v2.6.6

URL Frontend: http://haproxyserver.domain.com/application1
URL Backend: https://appserver1.otherdomain.com/

What I’m trying to achieve is that when a user visits http://haproxyserver.domain.com/application1, HAProxy gets the page at https://appserver1.otherdomain.com/ and send it back as http://haproxyserver.domain.com/application1

So, I want to rewrite “/application1” from the front to “/” in the back and send the response back as “/application1”. E.g. an image on the backend like https://appserver1.otherdomain.com/images/test.jpg should be send back as http://haproxyserver.domain.com/application1/images/test.jpg and so on.

My haproxy.cfg file without any rewrite config in it:

#---------------------------------------------------------------------
# PRD http frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  PRD-http-front
    bind *:80
    http-request add-header X-Forwarded-For %[src]
    http-request add-header X-Forwarded-Proto http

    mode http
    option httplog
    option forwardfor       except 127.0.0.0/8
    maxconn 10240

    # define acl's
    acl host_haproxy-stats hdr(host) -i haproxy-stats.domain.com

    ###################################
    ### decide which backend to use ###
    ###################################
    # HAProxy statistics page
    use_backend haproxy-stats if host_haproxy-stats

    # Other
    use_backend application1 if { path_beg /application1 }

    # default backend
    default_backend PRD-local-httpd

#---------------------------------------------------------------------
# haproxy-stats backend
#---------------------------------------------------------------------
backend haproxy-stats
    mode http
    option httpclose
    option forwardfor
    http-request add-header X-Forwarded-For %[src]
    http-request add-header X-Forwarded-Proto http
    server haproxy-stats 127.0.0.1:8888 check

#---------------------------------------------------------------------
# PRD-local-httpd backend
#---------------------------------------------------------------------
backend PRD-local-httpd
    mode http
    option httpclose
    option forwardfor
    http-request add-header X-Forwarded-For %[src]
    http-request add-header X-Forwarded-Proto http
    server HAProxy-Server haproxyserver.domain.com:8081 check

#---------------------------------------------------------------------
# application1 backend
#---------------------------------------------------------------------
backend application1
    mode http
    option httpclose
    option forwardfor
    http-request add-header X-Forwarded-For %[src]
    http-request add-header X-Forwarded-Proto http
    server appserver1 appserver1.otherdomain.com:443 check ssl verify none

This config doesn’t work because HAProxy will try to load https://appserver1.otherdomain.com/application1 in the backend, which doesn’t exist. I Already tried several rewrite settings in the backend config part without any success. Some examples:

http-request replace-path ^([^\ ])\ /application1/(.) \1\ /\2
http-request replace-path /application1(.*) / \1
http-request set-path %[path,regsub(^/application1/?,/)]

I Even tried this in the frontend:

acl app1 path_beg -i /application1/
http-request set-path  /%[path] if app1

I Googled for hours and tried many things but I can’t figure it out. Every help is much appreciated!

1 post - 1 participant

Read full topic


Viewing all articles
Browse latest Browse all 4849

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>