我试图build立一个testinghaproxy服务器,将涵盖2个基本领域。 如果用户正在使用http,但只有在特定的uri部分不存在的情况下才能自动redirect到https。
例如,如果用户访问http://www.test.com,他们将被redirect到https://www.test.com 。 但是,如果用户转到https://www.test.com/blog或http://www.test.com/blog,他们将被redirect到http://www.test.com/blog 。
这是我目前的testinghaproxy.cfg。 我正在运行haproxy 1.5-dev17
任何帮助,这是非常感谢。
global log 127.0.0.1 local0 log 127.0.0.1 local1 notice maxconn 15000 user haproxy group haproxy defaults log global mode http option httplog option dontlognull option abortonclose option http-server-close option redispatch retries 3 timeout queue 600s timeout connect 9s timeout client 60s timeout server 60s balance roundrobin # Set up application listeners here. frontend incoming bind *:80 name http acl has_blog_uri path /blog /blog/ redirect scheme https if !has_blog_uri !{ ssl_fc } bind *:443 ssl crt /etc/haproxy/test.pem use_backend blog_app if has_blog_uri default_backend rails_app backend rails_app option httpchk GET /app_health # server app1 10.1.1.1:8080 weight 1 check server app2 10.1.1.2:8080 weight 1 check backend blog_app option httpchk GET /blog/check.txt server blog 10.1.1.3:8080 check
让我build议几件事情:
redirect location <absolute_url> if <conditions> path_beg -i /blog 这里是我build议修改您的configuration的incoming部分,根据这些评论。 这应该redirecthttp://www.test.com到https://www.test.com ,并将尝试https://www.test.com/blog (您可以把页面与对用户的链接build议)。
frontend public bind *:80 acl has_blog_uri path_beg -i /blog redirect location https://www.test.com if !has_blog_uri use_backend blog_app if has_blog_uri frontend public-ssl bind *:443 ssl crt /etc/haproxy/test.pem acl has_blog_uri path_beg -i /blog use_backend rails_app if !has_blog_uri
希望这可以帮助。