2011-10-24 18 views
11

estoy tratando de configurar nginx para que el proxy pase la solicitud a otro servidor, solo si la variable $ request_body coincide con una expresión regular específica.nginx proxy condicional pase

Mi problema ahora es que no sé cómo configurar este comportamiento exactamente.

estoy actualmente a éste:

server { 
    listen 80 default; 
    server_name test.local; 

    location/{ 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $remote_addr; 
      proxy_set_header Host $http_host; 

      if ($request_body ~* ^(.*)\.test) { 
        proxy_pass http://www.google.de; 
      } 

      root /srv/http; 
    } 

} 

pero el problema aquí es, que la raíz tiene siempre la upperhand. el proxy no se aprobará de ninguna manera.

¿Alguna idea sobre cómo podría lograr esto?

gracias de antemano

+0

¿Seguro que desea comprobar '$ request_body' contra la expresión regular? Se ralentizará tu aplicación x veces Además, ¿quieres hacer 'proxy_pass' o simplemente' reorientar'? – user973254

+0

sí, no tengo otra opción, desafortunadamente, y realmente necesito un pase proxy, la aplicación no puede redireccionar (cliente xml-rpc) – sharpner

+0

¿Pero cuál es el problema ahora? No está funcionando? ¿Qué hay en los registros? – user973254

Respuesta

15

Prueba esto:

server { 
    listen 80 default; 
    server_name test.local; 

    location/{ 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $remote_addr; 
     proxy_set_header Host $http_host; 

     if ($request_body ~* ^(.*)\.test) { 
      proxy_pass http://www.google.de; 
      break; 
     } 

     root /srv/http; 
    } 

} 
+0

thx hombre, me ahorraste mucho tiempo y dolor de cabeza, me alegro de que la solución fuera así de simple: D ¡Cuánto aprecié! – sharpner

+0

np, eres bienvenido :) – user973254

+0

@sharpner ¿Este método todavía funciona? No parece en mi prueba. – robbles

Cuestiones relacionadas