【问题标题】:ASP .netcore WebAPI only processing local requestsASP .net core Web API 只处理本地请求
【发布时间】:2021-11-03 02:47:13
【问题描述】:

您好,我在本地/来自同一 IP 的请求上返回 200,但是当我将手机热点更改 IP 并发出请求时出现以下错误

HTTPConnectionPool(host={myIPAddress}, port=80): 超过最大重试次数 .....建立新连接失败:[WinError 10060] A 连接尝试失败,因为连接方没有正确 一段时间后响应,或建立连接失败 因为连接的主机没有响应”

program.cs 文件

public static void Main(string[] args)
{
    CreateWebHostBuilder(args).Build().Run();
}

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        .UseUrls("http://0.0.0.0:5000/")
        .UseKestrel(serverOptions =>
        {
            //Set properties and call methods on serverOptions
            serverOptions.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(2);
            serverOptions.Limits.MaxConcurrentConnections = 100;
            serverOptions.Limits.MaxConcurrentUpgradedConnections = 100;
            serverOptions.Limits.MaxRequestBodySize = 10 * 1024;
            serverOptions.Limits.RequestHeadersTimeout = TimeSpan.FromMinutes(1);
        });
}

NGINX - 网站可用/默认

server {
listen 80;
listen [::]:80;
server_name   HFTest;

location / {
    proxy_pass         http://localhost:5000; **#edited as per comments**
    proxy_http_version 1.1;
    proxy_set_header   Upgrade $http_upgrade;
    proxy_set_header   Connection keep-alive;
    proxy_set_header   Host $host;
    proxy_cache_bypass $http_upgrade;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto $scheme;
}

端口状态 - sudo netstat -tulpn | grep 听

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      635/nginx: master p
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      628/sshd
tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN      2048/API/HFTest

关于接下来要解决什么问题有什么想法吗?

谢谢

编辑:

请求 - 在 python 中

scopes = 'openid'
url='http://{IPAddress}:80/connect/token'

session = OAuth2Session(clientID,clientSecret, scope=scopes)
token = session.fetch_access_token(url,verify=False)

endpoint = "http://{IPAddress}/{endpoint}"

headers = {"Authorization": "Bearer %s" % token['access_token'],"Accept": "text/xml"}

session = requests.Session()

response = session.request("GET",endpoint,headers=headers,verify = False)
print(response.status_code)
print(response.text)

【问题讨论】:

  • 您好,您能否向我们提供您正在执行的请求?我的意思是您用于本地和外部请求的 URI

标签: linux nginx asp.net-core-webapi raspberry-pi4


【解决方案1】:

你的 nginx 配置中的上游服务 ip 需要是一个实际的 ip 地址。你可以试试localhost ip如下

…
location / {
    proxy_pass         http://127.0.0.1:5000;
…

【讨论】:

  • 我相信就是这样!根据文档http://localhost:5000 也可以。 nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass
  • @chue x 感谢您提供一些见解,我将其设置为 localhost 配置不起作用我更改了 UseUrls 也不起作用。我将两者都更改为 {IPAddress}:5000;没用
  • @Paulo 我尝试了两个版本,但都没有运气:(
  • 我建议你暂时绕过 nginx 以减少移动部分。你能告诉我们你提出的要求吗?
  • 谢谢@Paulo 我已经用请求更新了原始帖子远程IP请求卡在token = session.fetch_access_token(url,verify=False)
猜你喜欢
  • 1970-01-01
  • 2021-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-19
  • 2017-07-10
  • 2019-01-19
  • 1970-01-01
相关资源
最近更新 更多