2011-03-25 7 views
29

У меня есть 2 сервера,Nginx прокси весь трафик к удаленному Nginx

  1. с IP xx.xx.xx.xx, расположенный в Германии ... (работает внешний интерфейс: Nginx (Статическое содержимое), бэкенд: Apache2)

  2. с IP yy.yy.yy.yy, расположенный в Италии ...

Все запросы на данный момент посылает на сервер с IP xx.xx.xx.xx, Как прокси-сервер Л.Л. трафик от xx.xx.xx.xx к yy.yy.yy.yy с помощью Nginx ...

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

Благодаря ...

+0

ли вам попробуйте прочитать документацию? proxy_pass _http: //yy.yy.yy.yy – CyberDem0n

+0

уверен! но как читать X-Real-IP на удаленной стороне (ip: yy.yy.yy.yy) ?? – user676674

+0

Спасибо, ВСЕ сделано! – user676674

ответ

80

Для других. Ответ на тему, это настроить Nginx как:

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 /' всем путям? или только корневой путь '\'? – pomo

+1

@pomo в соответствии с руководящими принципами здесь http://nginx.org/en/docs/http/ngx_http_core_module.html#location он будет соответствовать всем вложенным запросам, таким как site.com/index.html, но не для запроса root aka site.com/ –

1

Вы можете использовать upsteream как:

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

, то вы можете использовать печенье или заголовок, чтобы установить запрос как:

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; 
    } 
Смежные вопросы