2017-06-12 34 views
0

這裏很奇怪。NodeJS express proxy - 從params中獲取端口號並在代理目標中提供端口號?

我有網址的不斷變化的隨機端點端口,例如:

  • 0.0.0.0:1111
  • 0.0.0.0:2222
  • 0.0.0.0:3333

現在的我在不同端點的這些端點上聯繫API(例如0.0.0.0:4444)。所以我不可避免地從我的JS客戶端代碼中找到CORS問題。

現在,我的客戶端代碼實際上知道端口。所以我試着開始實現一個NodeJS代理,它可以讓我解決這個問題。因此,我決定嘗試將URL作爲URL參數傳遞。所以我可以打電話給0.0.0.0:4444/api/[port]。

我現在嘗試做,這是通過使用NPM包「表達請求代理」

const requestProxy = require('express-request-proxy'); 

app.all('/api/:port/*', requestProxy({ 
    url: 'http://0.0.0.0:<<PORT NEEDED HERE>>/*', 
})); 

我曾嘗試以下:

url: 'http://0.0.0.0::port/*' 

但這只是返回錯誤:

Error: connect ECONNREFUSED 0.0.0.0:80<br> &nbsp; &nbsp;at Object.exports._errnoException (util.js:1014:11)<br> &nbsp; &nbsp;at exports._exceptionWithHostPort (util.js:1037:20)<br> &nbsp; &nbsp;at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1138:14) 

我已經成功地做到了這一點使用NGINX一些配置的調整,但我希望爲MOV轉到Node/Express。

希望有人能理解我需要什麼,並給我一些幫助。

謝謝。

回答

0

你只需要從請求中提取的端口,然後將它傳遞給url值正常:

app.all('/api/:port/*', (req, res, next) => { 
    var port = req.params.port; 
    requestProxy({ 
     url: 'http://0.0.0.0:'+port'+'/*' 
    }); 
    next(); 
});