我有一个移动应用程序,它依赖于托管在Microsoft Azure VM上的node.js服务器。我目前正在创建一个新的Azure虚拟机,我希望所有的API都可以直接使用,但由于我已经在Google Play上发布了该应用,因此已经下载该应用的用户将拥有将所有API调用指向旧的代码VM。我想向旧VM的服务器代码添加逻辑,将所有传入的HTTP请求重新路由到新VM,并将来自新VM的响应返回给客户端,即使它们直接向旧VM服务器发送请求。本质上,旧的虚拟机将扮演中间人的角色。有谁知道如何使用Node做到这一点?如何将http请求重新路由到节点中的另一台服务器
0
A
回答
0
正如@ yjwong的评论所说,如果您有一个独立的域名来服务旧的应用程序,并将旧Azure虚拟机的主机名绑定为DNS中的CNAME记录,则可以更改CNAME记录以绑定新Azure的主机名VM将使用旧应用程序的用户指向新的/正确的服务器。
关于CNAME记录,请参阅维基百科条目https://en.wikipedia.org/wiki/CNAME_record。
否则,您可以安装和使用像Nginx这样的反向代理来重定向&将旧应用程序访问的URL重写到新/正确服务器的URL。
以下是一些步骤,以帮助您做到这一点。
- 在旧的Azure虚拟机上安装Nginx,并启用模块
ngx_http_proxy_module
。 - 配置的Nginx作为反向代理的URL从旧的应用程序访问重定向,请参阅模块
ngx_http_proxy_module
http://nginx.org/en/docs/http/ngx_http_proxy_module.html的文档或搜索一些相关的文章用关键字nginx
,reverse proxy
,redirect
等 - 停止旧Azure VM上的nodejs服务器,并将Nginx端口配置为nodejs端口以为旧应用程序提供服务。
- 重新启动nginx并测试旧的应用程序重定向。
注意,对于上述步骤2,请在同一个Azure的互联星空确保这两个Azure的VM(旧&新的),并使用新的Azure的VM的静态私有IP地址(内部),因为一Azure虚拟机不能直接访问其他Azure虚拟机的公有地址。所以你需要使用反向代理中的私有IP地址来设置新的/正确的服务器的远程地址。
您可以参考下面的这些文档为两个Azure虚拟机设置Azure虚拟网络。
- 创建在Azure上新门户虚拟网络:https://azure.microsoft.com/en-us/documentation/articles/virtual-networks-create-vnet-arm-pportal/
- 如何添加静态私有IP地址到现有的VM:https://azure.microsoft.com/en-us/documentation/articles/virtual-networks-static-private-ip-arm-pportal/#how-to-add-a-static-private-ip-address-to-an-existing-vm
- 如果两个Azure的VM存在不属于任何互联星空,你需要将它们移动到VNet子网中而不会丢失虚拟硬盘,请参阅两个文档http://blogs.msdn.com/b/karldb/archive/2013/12/13/moving-an-existing-virtual-machine-into-a-virtual-network-subnet-without-losing-your-virtual-hard-disk-or-your-mind.aspx和http://blogs.technet.com/b/canitpro/archive/2014/06/17/step-by-step-move-a-vm-to-a-different-vnet-on-azure.aspx。
相关问题
- 1. Weblogic负载平衡和请求重新路由到另一台服务器
- 2. 将服务请求重定向到另一台服务器
- 3. 如何更新http请求,并将其发送到另一台Web服务器
- 4. 从浏览器到另一台服务器的HTTP POST请求
- 5. C#Http服务器请求路由
- 6. Laravel:HTTP请求到另一台服务器
- 7. 在C:代理HTTP请求到另一台服务器
- 8. c#mvc重新路由请求到不同的服务器
- 9. 如何使用Node.js服务器接收http请求,然后将该请求传递给另一台服务器?
- 10. 响应来自另一台机器节点的http请求js
- 11. Apache服务器发送http请求到另一台服务器与PHP
- 12. HTTP请求节点挂起,只打了服务器控制台
- 13. Charles(or alternative) - 将请求重新路由到另一个URL
- 14. 如何防止路由器将请求路由到故障服务器?
- 15. 将所有传出的http请求路由到一种代理服务器
- 16. 将请求重定向到群集中的另一台服务器
- 17. 将来自PHP的HTTP请求重新路由到Apache
- 18. htaccess http请求重新路由
- 19. 如何从servlet请求到另一台服务器
- 20. PHP。将请求按原样转发到另一台服务器
- 21. 将请求重定向到路由器
- 22. 我可以将一个http请求从一个node.js或python服务器转发到另一台服务器吗?
- 23. 如何将请求从一台django服务器发送到另一台服务器
- 24. 如何使用jquery和php将ajax post请求从一台服务器传递到另一台服务器?
- 25. 如何使用请求参数从SpringController重定向到另一台服务器
- 26. 从后台服务发送http请求到服务器失败
- 27. 如何将子域路由到另一个服务器
- 28. 如何配置nginx服务器将请求转发到具有空路径的节点服务器?
- 29. 将WordPress站点从一台服务器迁移到另一台服务器
- 30. 使用Charles Proxy将https请求路由到本地http服务器
旧VM的IP地址是否被硬编码到应用程序中?如果它只是一个域名,那么更新A记录只是微不足道的。否则,您也可以使用Nginx等反向代理(不一定使用Node)。 – yjwong
@yjwong问题是,没有更新应用程序的用户将使代码指向我们试图逐步淘汰的旧VM服务器。新用户将被指向新的/正确的服务器。 –