我曾尝试将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操作。另外,该容器中托管的网站也无法访问其他容器。
答案 0 :(得分:0)
以某种方式,即使Kestrel使用NGINX作为反向代理,也需要向Kestrel提供允许的URL。这仅发生在LXD容器中;意味着Kestrel和NGINX托管在LXD容器中。
这是解决方案。我在命令行中添加了环境变量,瞧,它起作用了。
ASPNETCORE_URLS=http://0.0.0.0:80 dotnet <your_app.dll>