簡體   English   中英

從一些請求中繞過nodejs express-http-proxy

[英]bypass nodejs express-http-proxy from some requests

我有一個express-http-proxy用於將請求重定向到另一台服務器。 我只想重定向一些請求,下面是重定向的請求代碼;

app.use('/api', proxy('abc.com', {
// preserveHostHdr: true,
https: isHttps,
proxyReqPathResolver: function (req) {
    return require('url').parse(req.url).path;
}}));

我試過了

app.use('/', proxy('abc.com', {
// preserveHostHdr: true,
https: isHttps,
proxyReqPathResolver: function (req) {
    return require('url').parse(req.url).path;
}}));

在第一個塊之后繞過任何其他請求,但我發現代理不斷轉發任何請求。 有沒有一種方法可以繞過代理並在同一主機上調用一些HTML文件?

https://github.com/villadora/express-http-proxy

filter(支持Promises)filter選項可用於限制代理哪些請求。 返回true繼續執行代理; 返回false-y以跳過此請求的代理。

app.use('/proxy', proxy('www.google.com', {
  filter: function(req, res) {
     return req.url === 'http://www.urltobeproxied.com';
  }
}));

您也可以攔截以返回您選擇的數據

app.use('/proxy', proxy('www.google.com', {
  userResDecorator: function(proxyRes, proxyResData, userReq, userRes) {
    data = JSON.parse(proxyResData.toString('utf8'));
    data.newProperty = 'exciting data';
    return JSON.stringify(data);
  }
}));

我發現解決方法如下。 我必須首先聲明一個靜態路徑來表示,並且所有路徑內容都將是公共的。 之后,ı進行了重定向。

app.use('/api', proxy('abc.com', {
        // preserveHostHdr: true,
        https: isHttps,
            proxyReqPathResolver: function (req) {
            return require('url').parse(req.url).path;
        }
    }));

app.use(express.static("./web"));
app.get('/',function(req,res){
         res.sendFile(require('path').join(__dirname, ''));
  });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM