【发布时间】:2021-08-05 23:02:06
【问题描述】:
尝试了许多分步指南,但仍然无法通过 AWS EC2 在 Ubuntu Linux 20.4 上运行非常简单的 ASP.NET Core 5.0
我做了什么:
为实例配置入站规则:
80 TCP 0.0.0.0/0
80 TCP ::/0
22 TCP 0.0.0.0/0
443 TCP 0.0.0.0/0
443 TCP ::/0
在实例上安装了 Dotnet SDK
已安装 NGINX
使用这些设置配置 NGINX
server {
listen 80;
server_name localhost;
location / {
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;
}
这个配置文件的语法是正确的
重新加载 NGINX
NGINX 的状态是 Active/Running
当我运行应用程序时,它会显示这个
所以,它表明它是好的,正在收听 5000/5001
最后,当我尝试像这样通过 ip 在浏览器中访问实例时:
在控制台中我看到了这个:
但应用程序没有进入浏览器 - 我看到 ERR_CONNECTION_TIMED_OUT 并且页面被重定向到 https://3.33.33.333:**5001**/
在 Startup.cs 的 Configure 方法中,一开始我有这个:
app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto });
因此,来自浏览器的请求肯定会到达服务器,但其余的都不起作用。
我错过了哪一步?
【问题讨论】:
-
从问题中不清楚,对33.333.333:443 的请求是否到达您的应用程序。您是否将防火墙配置为允许端口 5001 上的连接?如果您从服务器上的控制台尝试“wget localhost:5001”,输出是什么?
-
@AlexeyAdadurov 感谢您的回复。
-
@AlexeyAdadurov 感谢您的回复。我遵循的指南没有提到防火墙配置 - 我只是为 EC2 实例配置了 80/443 端口的入站规则。
-
当我从服务器的控制台运行 wget localhost:5001 我看到这个 Resolving localhost (localhost)... 127.0.0.1 Connecting to localhost (localhost)|127.0.0.1|:5001...连接的。错误:无法验证 localhost 的证书,由“CN=localhost”颁发:无法在本地验证颁发者的权限。要不安全地连接到 localhost,请使用 `--no-check-certificate'。
-
让我们暂时搁置证书问题...让我们使用建议的选项 --no-check-certificate 看看会发生什么。
标签: asp.net-core ubuntu nginx amazon-ec2