无法到达Kestrel+NGINX(代理)网站托管在LXD容器



我尝试将ASPNet Core web托管在LXD容器中,并将NGINX作为反向代理服务器,但没有成功。

当我让Kestrel通过dotnet <app.dll>命令运行时,浏览器(Firefox(会返回Unable to Connect。然而,当我没有运行应用程序时,在这种情况下,只有NGINX服务,浏览器会返回标准的NGINX 502坏网关。

我开始想,问题可能出在Kestrel身上。但是,据我所知,无论何时使用反向代理,Kestrel都不需要配置为外部访问。

然而,当我在Linux虚拟机(而不是容器(中托管该网站时,我设法访问了它。我也使用了同样的配置。在LXD容器上启用此功能是否缺少任何配置?

以下是我的NGINX服务器配置:

server {
listen 80;
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;
}
}

我想知道断裂的部分是在NGINX、Kestrel还是LXD上。我该怎么办?我可以从外面把这个容器打得很好。此外,其他容器也无法访问容器中托管的网站。

不知何故,您需要向Kestrel提供允许的URL,即使它使用NGINX作为反向代理。这只发生在LXD容器中;这意味着Kestrel和NGINX托管在LXD容器中。

这是解决方案。我在命令行中添加了环境变量,瞧,它起作用了。

ASPNETCORE_URLS=http://0.0.0.0:80 dotnet <your_app.dll>

最新更新