【问题标题】:.NET equivalent to node http-proxy.NET 相当于节点 http-proxy
【发布时间】:2016-09-16 18:23:51
【问题描述】:

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

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

.NET 有哪些可用选项?

【问题讨论】:

    标签: c# .net angularjs angular proxy


    【解决方案1】:

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

    http://nginx.org/

    【讨论】:

    • 您能否提供推荐理由?
    • @SkiGeek 它是免费的并且可以在 Windows 上运行。当代理已经存在时,没有理由尝试创建代理。
    • 我将不得不看看它如何适应我们的基础架构。目前我不明白这比我的问题中链接的 Node.js 解决方案更有益。
    • @SkiGeek 使用频繁使用的程序通常比自制程序更可取,因为您可能不会成为维护它的人。因此,最好使用 IIS、Apache、Nginx 等,而不是自定义编写它,除非有什么强迫你的手。
    • @SkiGeek 您也许也可以使用 IIS,但我没有资格说它是否可以完全按照您的要求完成。
    【解决方案2】:

    我决定坚持使用节点解决方案,这是用于将带有证书的请求代理到 API 的简单代码。关键是在代理选项中将 key、c​​ert 和 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');
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 2015-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多