相当于节点http-proxy
本文关键字:http-proxy 节点 相当于 | 更新日期: 2023-09-27 18:07:14
我正在寻找客户端应用程序和rest API之间代理API请求的。net解决方案。我发现一个需要node.js后端的解决方案是下面这个http://shawnsimondeveloper.com/nodeproxyangular/示例中的node http-proxy。
. net代理需要能够将证书附加到api请求以进行身份验证。代理应该接受任何请求并将其传递到目标URL。
.NET有哪些可用的选项?
我可能会选择nginx,尽管他们的文档有时会令人沮丧。
http://nginx.org/我决定坚持使用节点解决方案,下面是用于将带有证书的请求代理到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');
});