2014-03-26 36 views
0

有沒有辦法將nginx用作路由器,同時在URL中保留請求的域名?例如,如果我訪問mysite.com,nginx路由服務器會查看URL並將流量導向特定的服務器,同時在URL中保留原始請求的域。使用nginx路由到不同的服務器

E.g.

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

但是,即使場景site1.mysite.com/params被稱爲背後,用戶看到mysite.com/site1/params在URL中。

我已經採取了刺的配置,但似乎越來越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

與斜線使用位置,刪除重寫和使用proxy_pass/ URI。 Nginx將用/取代/site1/。另外,您可能需要將Host標頭設置爲site1.mysite.com而不是$host

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

這似乎重定向我mysite.com:random-port – bswinnerton

+0

只是我除了最後的評論,如果我手動在80端口輸入初始URL它的工作原理,有沒有什麼辦法讓周圍的? – bswinnerton

+0

你應該把端口上游定義'服務器site1.mysite.com:80;' –

相關問題