Hi,

Le 17/03/2015 20:42, Sean Patronis a écrit :
Unfortunately that did not fix it.  I mirrored your config and the
problem still exists.  I am not quite sure how the URL is getting built
on the backend (the developers say it is all relative URL/URI), but
whatever haproxy is doing, it is doing it differently than apache (with
mod_proxy).  Just for fun, I swapped back the ssl termination to apache
to prove that is does not have an issue (once it passes through apache
for ssl, it still goes through Haproxy and all of the backends/acl etc).

My goal in all of this was to ditch apache and go all haproxy on the
front end.

Any other ideas?

Have a look at this answer :
http://permalink.gmane.org/gmane.comp.web.haproxy/10361

I assume that your application is not aware of an SSL termination, so you have to notify it with the right configuration, which depends on your backends softwares. Can you provide some information on them ?



--Sean Patronis
Auto Data Direct Inc.
850.877.8804

On 03/17/2015 11:51 AM, Scott McKeown|redIT wrote:
Hi Sean,

I've got a setup that is somewhat like what you are after. I have
however, done it in a very dirrerent way for this very same reason.

Example below:

global
        log /dev/log local4 debug
        maxconn 4096
        daemon
        tune.ssl.default-dh-param 2048

        ssl-default-bind-ciphers
ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES256-SHA:HIGH:!RC4:!MD5:!aNULL:!EDH

        ssl-default-bind-options no-sslv3
        ssl-default-server-ciphers
ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES256-SHA:HIGH:!RC4:!MD5:!aNULL:!EDH

        ssl-default-server-options no-sslv3

defaults
        log     global
        option httplog
        retries 3
        timeout client  50000
        timeout connect 50000
        timeout server  50000

listen http-in
        bind x.x.x.x:80
        mode http
        default_backend www_redit

listen https-in
        bind x.x.x.x:443 ssl crt /etc/certs/server_2015.pem
        mode http

        acl samson_vpn_gateway src 10.8.0.1

        acl missing_nagios_slash path_reg -i ^/nagios3[^/]*$
        acl missing_cacti_slash path_reg -i ^/cacti[^/]*$
        acl missing_dradis_slash path_reg -i ^/customers[^/]*$

        redirect code 301 prefix / drop-query append-slash if
missing_nagios_slash
        redirect code 301 prefix / drop-query append-slash if
missing_cacti_slash
        redirect code 301 prefix / drop-query append-slash if
missing_dradis_slash

        acl is_nagios path_reg -i /nagios3/
        acl is_cacti path_reg -i /cacti/
        acl is_dradis path_reg -i /customers/

        #VPN Access Only
        use_backend services if is_nagios samson_vpn_gateway
        use_backend services if is_cacti samson_vpn_gateway
        use_backend dradis if is_dradis

        default_backend corp_site

listen corp_site
        mode http
        log global
        option httpclose
        source 0.0.0.0 usesrc clientip
        option forwardfor
        server websites01 172.16.0.10:80 check inter 3000 fall 3
        server services1 172.16.0.5:80 check inter 3000 fall 3

listen www_redit
        mode http
        redirect scheme https


This should do the trick for you you may want to try putting your
reqrep in or play around with the acl list and re-test with your
Headers but I've got mine built with TProxy enabled.


~Scott



On 17/03/2015 15:36, Sean Patronis wrote:
I seem to be having an interesting issue with forced ssl redirects in
Haproxy 1.5.11

Sorry if this sounds clear as mud, but here goes:

When I load a domain that is served by haproxy that is supposed to
force https, it initially forces the connection to be https (if you
attempt to connect over http), but I get a Mixed content warning when
it attempts to load another url that is based on the same domain.  If
I allow the mixed content through the browser, it does not get
redirected to https.  I am sure I just have something configured
incorrectly, but I am not sure where.....

I go to URL:
https://localcaleb.test123.com/apps/test123/test.html

inside the test123 app it makes a protocol-less request to another
app which ends up using http (since the backend is http balanced)
using this URL:
http://localcaleb.test23.com/apps/testgw/login.jsp

Since the we have a redirect for ssl in place, shouldn't the request
get forced to https?  It worked this way when apache was acting as
our SSL reverse proxy.  What am I doing incorrectly? If I allow mixed
content in the browser, the haproxy logs show that it indeed connects
over port 80 without getting redirected to 443.


here is the fontend:

frontend localcaleb.test123.com ## local Backends
    bind 10.0.60.5:80
    bind 10.0.60.5:443  ssl crt /etc/certs/test.bundle no-sslv3
ciphers
ECDHE-RSA-AES256-SHA384:AES256-SHA256:!RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM:!SSLV3:!eNULL

    redirect scheme https if !{ ssl_fc }
    option http-server-close
    acl is_apps_match url_beg /apps/
    use_backend caleblocal.test123.com if is_apps_match
    default_backend caleb.test123.com



here are the relevant backends:

backend caleblocal.test123.com
    reqrep ^([^\ ]*)\ /apps/(.*)     \1\ /\2
    server caleb-pc.staff.test123.com 192.168.166.182:8080 weight 50
check
    server maint maint.test123.com:81 check backup
    http-request set-header X-Forwarded-Port %[dst_port]
    http-request add-header X-Forwarded-Proto https if { ssl_fc }


backend caleb.test123.com
    reqrep ^([^\ ]*)\ /apps/(.*)     \1\ /\2
    server caleb 10.0.3.216:80 weight 50 check
    server maint maint.test123.com:81 check backup
    http-request set-header X-Forwarded-Port %[dst_port]
    http-request add-header X-Forwarded-Proto https if { ssl_fc }


Thanks.



---
This email has been checked for viruses by Avast antivirus software.
http://www.avast.com









--
Cyril Bonté

Reply via email to