[英]How to do a reverse proxy with node.js for a shiny app
編輯
我認為問題可能是 WebSocket 連接沒有通過代理 node.js。 如何授權WebSocket的連接?
我在 nodeJS 服務器上托管了一個 Web 應用程序。 在同一個虛擬機上,我還有一個閃亮的服務器托管一個應用程序。 當請求 somes URL 時,我使用 node 將流量重定向到端口 3838(閃亮)。
我在節點上使用此代碼:
app.use('/the-shiny-app', proxy({target: 'http://localhost:3838', changeOrigin: true}));
使用此設置,當我使用 mydomain/the-shiny-app/* 時,閃亮的應用程序一切正常,除非我嘗試在代碼框中運行代碼。
當我嘗試運行代碼時,我在 chrome 控制台上收到此錯誤:
Connection closed. Info: {"type":"close","code":4503,"reason":"The application unexpectedly exited","wasClean":true}
我所說的代碼框的一個例子:
如果我不使用 node.js 並且我將流量(在操作系統級別)從端口 80 直接重定向到 3838,一切正常。
sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 3838
我不知道當我們運行代碼時瀏覽器和閃亮的服務器之間究竟進行了什么樣的交換,但也許使用的協議被 node.js 阻止了。
我發現了問題。 正如安東尼吉布斯所說,您需要設置 WebSocket 升級。 我正在使用 http-proxy-middleware 你可以在這里找到文檔: https : //github.com/chimurai/http-proxy-middleware
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.