使用nginx路由到不同的服务器

时间:2014-03-26 18:49:13

标签: nginx

有没有办法将nginx用作路由器,同时在URL中保留所请求的域?例如,如果我点击mysite.com,nginx路由服务器会查看URL并将流量定向到特定服务器,同时在URL中维护原始请求的域。

E.g。

mysite.com/site1/params
Router -> site1.mysite.com/params

但即使正在调用幕后site1.mysite.com/params,用户也会在网址中看到mysite.com/site1/params

我已经对配置进行了尝试,但似乎已经获得了404。

upstream site1 {
  server site1.mysite.com;
}

location /site1 {
  rewrite ^(.*)$ /$1 break;
  proxy_pass  http://site1;
  proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
  proxy_redirect off;
  proxy_buffering off;
  proxy_set_header        Host            $host;
  proxy_set_header        X-Real-IP       $remote_addr;
  proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
}

1 个答案:

答案 0 :(得分:1)

使用带斜杠的位置,删除重写并使用proxy_pass uri /。 Nginx会将/site1/替换为/。此外,您可能需要将Host标题设置为site1.mysite.com而不是$host

location /site1/ {
  proxy_pass  http://site1/;
  proxy_set_header Host site1.mysite.com;
  ...
}