I tried hosting my ASPNet Core web inside a LXD container together with NGINX as reverse proxy server, but to no avail.
When I have Kestrel running through dotnet <app.dll>
command, the browser (Firefox) returns Unable to Connect
. However, when I don't have the app running, which in this case, just NGINX service, the browser returns standard NGINX 502 Bad Gateway.
I am starting to think, the problem might lie on Kestrel. But, as far as I understand, whenever we use reverse-proxy, Kestrel doesn't need to be configured for outside access.
However, I managed to access the website when I hosted it in a Linux VM (not container). I used the same configuration too. Is there any missing configuration to enable this feature on LXD containers?
Below is my NGINX server configuration:
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;
}
}
I wonder if the broken part is on NGINX, Kestrel or LXD. What should I do? I can ping the container from outside just fine. Also, the website hosted in the container is inaccessible to other containers too.
Somehow, you need to supply the allowed urls to Kestrel even though it is using NGINX as a reverse proxy. This ONLY happens in LXD container; meaning the Kestrel and NGINX are hosted in a LXD container.
Here is the solution. I added the environment variable in the command line and voila, it works.
ASPNETCORE_URLS=http://0.0.0.0:80 dotnet <your_app.dll>