.NET等效于节点http-proxy

时间:2016-09-16 18:23:52

标签: c# .net angularjs angular proxy

我正在寻找一种.NET解决方案来代理客户端应用程序和其他API之间的API请求。我发现需要node.js后端的一个解决方案是遵循此http://shawnsimondeveloper.com/nodeproxyangular/示例的节点http-proxy。

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

.NET可以使用哪些选项?

2 个答案:

答案 0 :(得分:0)

我可能会选择使用nginx,尽管他们的文档有时令人沮丧。

http://nginx.org/

答案 1 :(得分: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');
});