2016-10-26 116 views
1

我已經搜索了幾個關於這個問題,但沒有遇到我的情況。Nginx:重寫/ Proxy_Pass而不更改原始URL

以下是我需要:

我的客戶acmecorporation使用下列URL buysomething.acmecorporation.com/computers當有人在網上想從網站購買電腦。但是,這需要重定向到銷售它的實際供應商 - 例如:

computers.world.com - acme需要翻譯成的所有上下文 (作爲示例)printers.world.com

我已成功地與供應商

 location /computers { 
     rewrite ^/(computers.*)$ https://computers.world.com; 
     proxy_set_header request_uri $request_uri; 
     proxy_pass https://buysomething.acmecorporation.com/computers; 
    } 

該網站開闢了正常工作 - 但是在瀏覽器的URL變爲computers.world.com。該供應商應該做些什麼來讓該公司持續下去?

或者這是我的客戶(acmecorporation)方面的變化嗎?

非常感謝!

+0

我相信你不能通過nginx重定向到一個維護前一個url的外部網站。然而,你將能夠在html中使用iframe來做類似的事情。 – alejdg

+0

我期待着做類似的事情。任何幫助表示讚賞。 – andi

回答

0

您將無法重定向到通過nginx維護前一個網址的外部網站。但是你可以通過HTML frameset做類似的事情。

buysomething.acmecorporation.com/computers訪問你的應用程序應該呈現下面的HTML(無<html><body>標籤):

<frameset rows="100%"> 
    <frameset cols="100%"> 
    <frame src="https://computers.world.com" frameborder="0" > 
    </frameset> 
</frameset> 

這樣computers.world.com將你的頁面中加載和URL不會改變。

+0

是的,我能夠。但是從nginx的角度來看。謝謝! – user2959260

+1

除非您指向的目標網絡服務器配置爲響應主機名稱buysomething.acmecorporation.com,否則不能這樣做。我不相信這是可能的,因爲重定向點是第三方站點。 – alejdg

+0

是的同意,感謝您的確認! – user2959260