无法访问LXD容器中托管的Kestrel + NGINX(代理)网站

时间:2020-07-20 10:26:22

标签: linux asp.net-core kestrel-http-server lxd

我曾尝试将ASPNet Core Web与NGINX一起作为反向代理服务器托管在LXD容器中,但无济于事。

当我通过dotnet <app.dll>命令运行Kestrel时,浏览器(Firefox)返回Unable to Connect。但是,当我没有运行该应用程序(在本例中为NGINX服务)时,浏览器将返回标准NGINX 502 Bad Gateway。

我开始思考,问题可能出在红est。但是,据我了解,每当我们使用反向代理时,都不需要为外部访问配置Kestrel。

但是,当我将网站托管在Linux VM(而非容器)中时,我设法访问了该网站。我也使用相同的配置。是否有任何缺少的配置可在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上。我该怎么办?我可以从外面对容器进行ping操作。另外,该容器中托管的网站也无法访问其他容器。

1 个答案:

答案 0 :(得分:0)

以某种方式,即使Kestrel使用NGINX作为反向代理,也需要向Kestrel提供允许的URL。这仅发生在LXD容器中;意味着Kestrel和NGINX托管在LXD容器中。

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

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