【问题标题】:ASP.NET Core 2 Web API - 502 Bad Gate Way(Centos 7) - NGINXASP.NET Core 2 Web API - 502 错误网关(Centos 7) - NGINX
【发布时间】:2020-03-11 22:00:22
【问题描述】:

我有一个 ASP.NET Core 2 Web API 项目Centos 7 Linux 服务器

我在服务器中将项目作为服务运行。

它在我的服务器上运行 7/24。

如果我写到 Linux 终端 "wget http://localhost:5000/api/users --no-check-certificate",用户 json 文件会下载到我的服务器。这里没有问题。

但我无法从本地计算机访问我的 api。

如果我将 "http://[SERVER_IP]:[PORT]/api/users" 写入网络浏览器,它会返回 502 Bad Gateway Http 状态代码。

我该如何解决?

etc/nginx/nginx.conf

http {
      ...
      server{
         listen 12900;
         location / {
            proxy_pass http://195.201.150.228:5000;
         }
      } 
}

【问题讨论】:

  • 您将请求代理到http://195.201.150.228:5000。你有没有配置你的服务器打开5000的端口?
  • 是的,我已经在vesta c面板中打开了5000端口。
  • 您可以从远程计算机访问http://195.201.150.228:5000 吗?
  • 我解决了这个问题。我的服务器有vesta c面板。所以我不能将服务器块写入etc/nginx/nginx.conf。我创建了一个用户和一个名为 api.hocamnerede.com 的子域,并将服务器块写入 /home/Hocamnerede/conf/web/api.hocamnerede.com.nginx.conf .

标签: linux nginx server centos asp.net-core-webapi


【解决方案1】:

我解决了这个问题。我的服务器有vesta c面板。所以我不能将服务器块写入etc/nginx/nginx.conf。我创建了一个用户和一个名为 api.hocamnerede.com 的子域,并将服务器块写入 /home/Hocamnerede/conf/web/api.hocamnerede.com.nginx.conf

/home/Hocamnerede/conf/web/api.hocamnerede.com.nginx.conf

server {
listen      195.201.150.228:80;
server_name api.hocamnerede.com www.api.hocamnerede.com;
root        /home/Hocamnerede/web/api.hocamnerede.com/public_html;
index       index.php index.html index.htm;
access_log  /var/log/nginx/domains/api.hocamnerede.com.log combined;
access_log  /var/log/nginx/domains/api.hocamnerede.com.bytes bytes;
error_log   /var/log/nginx/domains/api.hocamnerede.com.error.log error;

    location /api {
        proxy_pass         http://localhost:5000;
        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;
    }
}

【讨论】:

    【解决方案2】:

    我预计 502 bad gateway 和 http 请求被 ASP.NET Core 中的 CORS 策略阻止的原因

    由于数据库中的死锁,我们也可能在浏览器控制台中收到 502 bad gate way 错误。

    数据库死锁:我们正在尝试在数据库中异步获取/放入数据,由于大量事务而数据库被锁定并且服务没有得到任何响应。

    解决方案:我们可以通过增加web.config文件中的超时时间来解决这个问题

    解决方案:要么我们应该清除数据库端的所有会话,否则我们应该将所有异步插入/选择/更新方法转换为在服务端同步。

    同步调用的副作用:我们将失去应用程序的性能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-14
      • 2011-05-14
      • 2019-06-05
      • 2015-08-10
      • 2021-11-19
      • 2012-09-25
      • 2014-12-07
      • 2020-09-29
      相关资源
      最近更新 更多