我有一個移動應用程序,它依賴於託管在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服務器。新用戶將被指向新的/正確的服務器。 –