2011-03-25 10 views
29

Ho 2 assistenti,delega nginx tutto il traffico di nginx remoto

  1. con xx.xx.xx.xx IP, situato in Germania ... (esecuzione frontend: nginx (Contenuto Statico), back-end: apache2)

  2. con yy.yy.yy.yy IP, situato in Italia ...

Tutte le richieste in questo momento sta inviando al server con xx.xx.xx.xx IP, Come posso un proxy a ll traffico da xx.xx.xx.xx a yy.yy.yy.yy utilizzando nginx ...

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

Grazie ...

+0

avete fatto prova a leggere la documentazione? proxy_pass _http: //yy.yy.yy.yy – CyberDem0n

+0

sicuro! ma come leggere l'X-Real-IP sul lato remoto (ip: yy.yy.yy.yy) ?? – user676674

+0

Grazie, TUTTO fatto! – user676674

risposta

80

per gli altri. Risposta per soggetto è configurare nginx come:

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

Does 'location /' corrisponde a tutti i percorsi? o solo il percorso root '\'? – pomo

+1

@pomo secondo le linee guida qui http://nginx.org/en/docs/http/ngx_http_core_module.html#location corrisponderà a tutte le query annidate come site.com/index.html ma non per le query radice aka site.com/ –

1

È possibile utilizzare upsteream come:

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; 
} 

quindi è possibile utilizzare il cookie o intestazione per impostare la richiesta del tipo:

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; 
    }