HAProxy Redireciona e combina com base em URI

6

Estou tentando configurar um servidor haproxy de teste que abrangerá duas áreas básicas. Redirecionamento automático para https se o usuário estiver usando http, mas somente se uma parte específica do uri não estiver presente.

Por exemplo, se um usuário acessar o link , ele será redirecionado para link . Mas se o usuário acessar o link ou o link eles seriam redirecionados para o link .

Este é o meu teste atual haproxy.cfg. Estou executando o haproxy 1.5-dev17

Qualquer ajuda com isso é muito apreciada.

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
    
por rottmanj 23.02.2013 / 12:59

1 resposta

7

Deixe-me sugerir algumas coisas:

  • Você deve separar sua configuração insegura e segura em dois blocos separados, desta forma você pode controlar mais facilmente os casos de ACL e redirecionamento.
  • Para o redirecionamento, tente usar o formato redirect location <absolute_url> if <conditions>
  • Para detectar os caminhos do URI, tente usar path_beg -i /blog
  • Finalmente, você não será capaz de redirecionar as pessoas de uma conexão HTTPS, isso é considerado inseguro e não é suportado.

Aqui estão minhas modificações sugeridas para a parte incoming da sua configuração, com base nesses comentários. Isso deve redirecionar o link para o link E falhará quando uma tentativa é feita para o link (você pode colocar uma página lá com uma sugestão de link para o usuário).

    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

Espero que isso ajude.

    
por 23.02.2013 / 20:35