ProxyPass und ProxyPassReverse mit HAProxy

19 Oct 2015

Ein Bug im Apache Web Server bei zu langem ProxyPass Worker Namen zwingt einen zur Suche nach Alternativen. Vor allem wenn man Amazon S3 Buckets für den Content der Homepage verwendet, da sich dadurch unweigerlich lange Urls ergeben. Eine davon ist der HAProxy welcher eh schon als LoadBalancer sehr beliebt ist.

frontend http
    mode http
    bind 0.0.0.0:80

    acl hide_domain req.hdr(Host) www.always-visible.com
    use_backend hidden_domain_backend if hide_domain

backend hidden_domain_backend
    mode http
    # ProxyPass / http://content-of-always-visible.s3-website-us-east-1.amazonaws.com
    http-request set-header Host content-of-always-visible.s3-website-us-east-1.amazonaws.com
    reqrep  ^([^:]*)\ /(.*) \1\ /\2

    # ProxyPassReverse / http://content-of-always-visible.s3-website-us-east-1.amazonaws.com
    acl hdr_location res.hdr(Location) -m found
    rspirep ^Location:\ (https?://www.always-visible.com(:[0-9]+)?)?(/.*) Location:\ /\2 if hdr_location
    server amazon_s3_bucket content-of-always-visible.s3-website-us-east-1.amazonaws.com:80

Entlehnt aus dem blog.haproxy.com was aber bei mir nicht out-of-the-box funktioniert hat.