2011-06-01 47 views
6

He configurado haproxy para redirigir la ruta "/ rawman" al puerto 8080 en mi servidor. Funciona la primera vez, pero tan pronto como visito el sitio predeterminado deja de funcionar. El sitio predeterminado se ejecuta en apache con mod_rewrite y capta solicitudes no válidas (usando codeigniter) por lo que en lugar de ver el sitio redirigido cuando visito http://mysite.com/rawman?foo=bar veo el sitio predeterminado.¿Por qué haproxy path_beg solo funciona si no visito el sitio predeterminado?

This is my haproxy config: 

    global 
     log 127.0.0.1 local0 
     log 127.0.0.1 local1 notice 
     maxconn 4096 
     user haproxy 
     group haproxy 
     daemon 
defaults 
     log  global 
     mode http 
     option httplog 
     option dontlognull 
     retries 3 
     option redispatch 
     maxconn 2000 
     contimeout  5000 
     clitimeout  50000 
     srvtimeout  50000 

frontend http_proxy 
     bind 0.0.0.0:8090 
     acl is_ast path_beg /rawman 
     use_backend ast if is_ast 
     default_backend mysite 

backend ast 
     server ast 0.0.0.0:8080 

backend mysite 
     server local 0.0.0.0:80 

Respuesta

29

intente configurar option httpclose después de la línea srvtimeout.

Si no lo hace, haproxy usa la configuración keepalive del servidor de destino. Una vez que visite el sitio principal, la conexión se abrirá y se mantendrá abierta, y en su próxima solicitud, haproxy va al . Oh, no es tan agradable: tengo una conexión abierta. Vamos a usarlo aunque no debería. Con la opción httpclose establecida, siempre cierra la conexión, asegurando que cada nueva solicitud use la conexión correcta.

Perdí 3 horas de mi vida averiguando eso.

+0

¡genial! He estado tratando de hacer que esto funcione todo el día, ¡¡Gracias !! – Jesse

+0

¡me has ahorrado horas! – CarpeNoctem

+0

+1 para la explicación! gracias –

Cuestiones relacionadas