2011-03-25 27 views
29

Tengo 2 servidores,de proxy Nginx todo el tráfico a nginx remota

  1. con xx.xx.xx.xx IP, situado en Alemania ... (frontend ejecutando: nginx (Contenido estático), back-end: Apache 2)

  2. con yy.yy.yy.yy IP, situado en Italia ...

Todas las solicitudes en este momento está enviando al servidor con xx.xx.xx.xx IP, ¿Cómo puedo un proxy? ll tráfico de xx.xx.xx.xx a yy.yy.yy.yy usando nginx ...

  request       proxy, request 
Internet  ->  xx.xx.xx.xx(nginx)   ->    yy.yy.yy.yy(nginx, Apache) 
      <-         <- 
      response       proxy, response 

Gracias ...

+0

¿Te ha intente leer la documentación? proxy_pass _http: //yy.yy.yy.yy – CyberDem0n

+0

¡seguro! pero cómo leer el X-Real-IP en el lado remoto (ip: yy.yy.yy.yy) ?? – user676674

+0

¡Gracias, TODO! – user676674

Respuesta

80

Para otros. Respuesta para tema es configurar Nginx como:

server { 
    listen 80; 
    server_name mydomain.com; 
    location/{ 
     access_log off; 
     proxy_pass http://mydomain.com:8080; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header Host $host; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
} 
+0

¿'location /' coincide con todas las rutas? o solo la ruta raíz '\'? – pomo

+1

@pomo según guidlines aquí http://nginx.org/en/docs/http/ngx_http_core_module.html#location coincidirá con todas las consultas anidadas como site.com/index.html pero no para la consulta raíz aka site.com/ –

1

Puede utilizar upsteream como:

upstream xx.xx.xx.xx:8080{ 
    #ip_hash; 
    server xx.xx.xx.xx:8080 max_fails=2 fail_timeout=2s; 
    server yy.yy.yy.yy:8181 max_fails=2 fail_timeout=2s; 
} 

continuación, puede utilizar la cookie o encabezado para establecer la petición como:

location /app { 
     if ($cookie_proxy_override = "proxy-target-A") { 
      rewrite . http://xx.xx.xx.xx:8080/app; 
      proxy_set_header X-Real-IP  $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      break; 
     } 
     if ($cookie_proxy_override = "proxy-target-B") { 
      rewrite . http://yy.yy.yy.yy:8181/webreg; 
      proxy_set_header X-Real-IP  $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      break; 
     } 
     proxy_pass http://xx.xx.xx.xx:8080/webreg; 
     proxy_set_header X-Real-IP  $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
Cuestiones relacionadas