如何代理在docker容器中运行的dotnet核心应用程序的每个请求

时间:2016-12-16 22:23:24

标签: c# docker proxy .net-core

我正在努力从运行在docker容器代理http请求上的web api获取我的http调用。我使用bash

成功通过代理到达了所需的端点
docker exec -i -t 665b4a1e17b6 /bin/bash 

http_proxy=http://exampleProxy:7777 curl -s http://endpoint

现在我想在同一个容器上运行的应用程序中重新创建它

我尝试了以下内容:

  1. dotnet core proxy

        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();
    
        app.UseMvc().RunProxy(new ProxyOptions
        {
            Scheme = "http",
            Host = "example",
            Port = "7777"
        });
    
  2. 在创建容器时设置http_proxy环境变量

        export http_proxy=http://example:7777
    
  3. 使用HttpClientHandler

    var handler = new HttpClientHandler
    {
        Proxy = new WebProxy("http://example:777)
    };
    var client = new HttpClient(handler);
    etc....
    
  4. 有人能想到设置代理的其他方法吗?或者有关如何调试的建议?

1 个答案:

答案 0 :(得分:0)

我不是dotnet专家,也不确定您的应用是如何运行的,所以我假设您像普通的nginx一样运行您的应用。 我建议您按照此sh -c your_app运行您的应用,这意味着您可以将docker cmd设置为sh -c your_app

希望这能解决您的问题。

顺便说一句,这个问题与kubernetes无关,你可能有错误的标签;)