【问题标题】:ASP Net Core Linux ERR_CONNECTION_REFUSEDASP Net Core Linux ERR_CONNECTION_REFUSED
【发布时间】:2019-10-05 19:42:58
【问题描述】:

我正在测试网络核心应用程序部署到运行 Ubuntu 18.04 和 Nginx 1.14 的 Digitalocean droplet。为了进行测试,我使用了“dotnet new”提供的模板。

dotnet 新网站dotnet 新 mvc 应用程序工作正常。我可以从我的浏览器访问他们。我在使用 dotnet new webapi 应用时遇到问题。但是我试图达到它,我最终得到一个 ERR_CONNECTION_REFUSED 响应。

我为设置液滴所做的简短版本:

wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb

sudo dpkg -i packages-microsoft-prod.deb

sudo add-apt-repository 宇宙

sudo apt-get install apt-transport-https

sudo apt-get 更新

sudo apt-get 安装 dotnet-sdk-2.2

sudo apt install nginx sudo ufw allow 'Nginx HTTP'

/etc/nginx/sites-available/默认内容:

server {
 listen 80;
 location / {
 proxy_pass http://127.0.0.1:5000; #also tried 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;
 }
}

curl 的结果(故意破坏 IP 地址)

curl -I -X GET http://123.123.123.123/api/values

HTTP/1.1 307 Temporary Redirect
Server: nginx/1.14.0 (Ubuntu)
Date: Sun, 19 May 2019 00:32:21 GMT
Content-Length: 0
Connection: keep-alive
Location: https://123.123.123.123:5001/api/values

我的 Nginx 日志给了我这个错误,我已经用谷歌搜索了但无济于事:

2019/05/19 00:03:06 [error] 3632#3632: *4 connect() failed (111: Connection refused) while connecting to upstream, client: 12.123.12.123, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:5000/", host: "123.123.123.117"

针对@Oliver 的问题,这里是 netstat -ntlp 的输出

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3527/nginx: master
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      605/systemd-resolve
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      946/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      946/sshd

关于我可能忽略的任何建议?

谢谢!

【问题讨论】:

  • Web API 模板强制执行 HTTPS,因此重定向会将浏览器引导至端口 5001。但是,您的 nginx 配置并未在端口 5001 公开 HTTPS 服务。这正是 ERR_CONNECTION_REFUSED 发生的原因。您可以编辑测试项目并删除其 HTTPS 重定向。
  • netstat -nltp 的输出是什么?
  • @Oliver 我更新了问题以包括 netstat -nltp 输出,谢谢!正在考虑删除 HTTPS 重定向,感谢 @Lex Li

标签: linux nginx asp.net-web-api asp.net-core digital-ocean


【解决方案1】:

服务器的响应解释了原因。对http://127.0.0.1:5000GET 请求被重定向到https://123.123.123.123:5001/api/values,这是因为HTTPS 重定向处于活动状态。

解决方案:打开Startup.cs 文件。在public void Configure(...)方法中找到下面这行并注释掉:

app.UseHttpsRedirection();

Here你可以阅读更多。

【讨论】:

  • Bingo,正要更新我让它工作的帖子。非常感谢!
【解决方案2】:

我使用的是 ASP .NET Core Web API,这些更改对我有用

/Program.cs 中的一些更改。只需将 IHostBuilder 替换为 IWebHostBuilder 并添加 UseUrls

public static IWebHostBuilder CreateHostBuilder(string[] args) =>
        Microsoft.AspNetCore.WebHost.CreateDefaultBuilder(args)
        .UseUrls("http://0.0.0.0:5000")
        .UseStartup<Startup>();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-31
    • 2017-09-15
    • 2020-12-08
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多