2016-09-16 104 views
0

我正在寻找.NET解决方案来代理客户端应用程序和其余API之间的API请求。一个需要node.js后端的解决方案是找到这个http://shawnsimondeveloper.com/nodeproxyangular/示例后面的节点http-proxy。.NET等价于节点http代理

.NET代理需要能够将证书附加到api身份验证请求。代理应该接受任何请求并将其传递到目标网址。

.NET有哪些选项可用?

回答

0

我决定坚持与节点的解决方案,在这里是用于代理与一个证书到API的请求的简单代码。关键是在代理选项中将key,cert和ca属性添加到目标。

'use strict'; 
let fs = require('fs'); 
let https = require('https'); 
let express = require('express'); 
let httpProxy = require('http-proxy'); 
let privateKey = fs.readFileSync(__dirname + '/certs/server.key', 'utf8'); 
let certificate = fs.readFileSync(__dirname + '/certs/cert.pem', 'utf8'); 
let caChain = fs.readFileSync(__dirname + '/certs/cachain.pem', 'utf8'); 
let staticRoot = __dirname + '/'; 

let httpsOptions = { 
    key: privateKey, 
    cert: certificate, 
    ca: [caChain] 
}; 

let proxyOptions = { 
    target: { 
     host: 'api.host.com', 
     protocol: 'https:', 
     key: privateKey, 
     cert: certificate, 
     ca: caChain, 
    }, 
    changeOrigin: true 
}; 

let app = express(); 
let apiProxy = httpProxy.createProxyServer(proxyOptions); 
app.use(express.static(staticRoot)); 
app.all('/api/*', function(req, res) { 
    console.log(Date().toString('yyyymmdd hh:mm:ss') + ' - API Request Proxied'); 
    apiProxy.web(req, res, proxyOptions); 
}); 

https.createServer(httpsOptions, app).listen(3001, function(){ 
    console.log('https server listening on port 3001'); 
}); 
0

我可能会去nginx,虽然他们的文档有时会令人沮丧。

http://nginx.org/

+0

你能提供推荐背后的推理吗? – JoAMoS

+0

@SkiGeek它是免费的,可以在windows上运行。当他们已经存在时没有理由尝试创建代理。 – dwbartz

+0

我将不得不看看它是如何适应我们的基础设施。目前我不明白这是如何比我的问题中链接的Node.js解决方案更有益的。 – JoAMoS