ASP 网络核心 Linux ERR_CONNECTION_REFUSED
ASP Net Core Linux ERR_CONNECTION_REFUSED
我正在测试将网络核心应用程序部署到 Digitalocean droplet 运行 Ubuntu 18.04 和 Nginx 1.14。为了进行测试,我使用了 'dotnet new'.
提供的模板
dotnet 新网站
和
dotnet 新 mvc
应用程序工作正常。我可以通过我的浏览器联系到他们。我在使用 dotnet new webapi 应用程序时遇到问题。但是我试图达到它,我最终得到了 ERR_CONNECTION_REFUSED 响应。
我为设置 Droplet 所做的简短版本:
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 universe
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install
dotnet-sdk-2.2
sudo apt install nginx sudo ufw allow 'Nginx HTTP'
/etc/nginx/sites-available/default内容:
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
关于我可能忽略的内容有什么建议吗?
谢谢!
服务器的响应解释了原因。 GET
到 http://127.0.0.1:5000
的请求被重定向到 https://123.123.123.123:5001/api/values
,这是因为 HTTPS 重定向处于活动状态。
解决方法:打开Startup.cs
文件。在public void Configure(...)
方法中找到下面一行并注释掉:
app.UseHttpsRedirection();
Here您可以阅读更多相关信息。
我在 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>();
我正在测试将网络核心应用程序部署到 Digitalocean droplet 运行 Ubuntu 18.04 和 Nginx 1.14。为了进行测试,我使用了 'dotnet new'.
提供的模板dotnet 新网站 和 dotnet 新 mvc 应用程序工作正常。我可以通过我的浏览器联系到他们。我在使用 dotnet new webapi 应用程序时遇到问题。但是我试图达到它,我最终得到了 ERR_CONNECTION_REFUSED 响应。
我为设置 Droplet 所做的简短版本:
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 universe
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-2.2
sudo apt install nginx sudo ufw allow 'Nginx HTTP'
/etc/nginx/sites-available/default内容:
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
关于我可能忽略的内容有什么建议吗?
谢谢!
服务器的响应解释了原因。 GET
到 http://127.0.0.1:5000
的请求被重定向到 https://123.123.123.123:5001/api/values
,这是因为 HTTPS 重定向处于活动状态。
解决方法:打开Startup.cs
文件。在public void Configure(...)
方法中找到下面一行并注释掉:
app.UseHttpsRedirection();
Here您可以阅读更多相关信息。
我在 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>();