2017-01-30 16 views
4

プロキシとして動作するエクスプレスサーバを作成するにはどうすればよいですか?expressをパススルー経由で使用する方法は?

要件:企業のプロキシの背後にある

  • HTTP + httpsの
  • 作品
  • いくつかのURL

のための特別なコンテンツを返すためのオプション私はhttp-proxy, express-http-proxy, https-proxy-agent, requestを試してみました。私はそれらを正しく使う方法を理解できませんでした。要求

私はrequestで得た最高の結果を使用して

。しかし、いくつかの問題があります。このアプローチの

var express = require('express'), 
    request = require('request'), 
    app = express(); 

var r = request.defaults({'proxy':'http://mycorporateproxy.com:8080'}); 
function apiProxy() { 
    return function (req, res, next) { 
     console.log(req.method); 
     r.get(req.url).pipe(res);  
    } 
} 

app.use(apiProxy()); 

app.listen(8080, function() { 
    'use strict'; 
    console.log('Listening...'); 
}); 

問題:

  • それはソース要求の
  • ヘッダが
  • HTTPSを渡されません(...、HEAD、GET)すべての要求に対してgetを使用していますは動作していません。

us HTTPプロキシがここ

var express = require('express'), 
    httpProxy = require('http-proxy'), 
    app = express(); 

var proxy = httpProxy.createProxyServer({ 
}); 

function apiProxy() { 
    return function (req, res, next) { 
     console.log(req.method); 
     proxy.web(req, res, {target: req.url}); 
    } 
} 

app.use(apiProxy()); 

app.listen(8080, function() { 
    'use strict'; 
    console.log('Listening...'); 
}); 

私は(おそらく不足している企業の代理で)取得INGの

Error: connect ECONNREFUSED xx.xx.xx.xx:80 
    at Object.exports._errnoException (util.js:1026:11) 
    at exports._exceptionWithHostPort (util.js:1049:20) 
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1085:14) 

私は

--proxy-server="localhost:8080"

マイ.npmrcが含まれているオプションを使用してGoogleのクロムを開始しましたプロキシも同様です。私は成功し、次のとhttp-proxy-middlewareを使用しました

proxy=http://mycorporateproxy.com:8080 
https-proxy=http://mycorporateproxy.com:8080 

答えて

0

const express = require("express") 
const app = require("express")() 
const proxy = require("http-proxy-middleware") 
const package = require("./package.json") 

const target = process.env.TARGET_URL 
const port = process.env.PORT 

const wildcardProxy = proxy({ target }) 

app.use(wildcardProxy) 

app.listen(config.port,() => console.log(`Application ${package.name} (v${package.version}) started on ${config.port}`)) 

を私は、HTTPSの必要性を持っていなかった、まだそれはドキュメントに記載されます:https://github.com/chimurai/http-proxy-middleware#http-proxy-options

関連する問題