2016-10-26 86 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