¿Cómo puedo saber cómo está configurada mi aplicación .NET Core para ejecutarse en una máquina virtual Ubuntu con NGINX?

¿Cómo puedo saber cómo está configurada mi aplicación .NET Core para ejecutarse en una máquina virtual Ubuntu con NGINX?

Estoy trabajando con una aplicación .NET Core que se ejecuta como un servicio basado en systemd, en una máquina virtual alojada en Azure que ejecuta NGINX. (La VM se pone en funcionamiento como entorno de desarrollo). Configuré un registro A usando Azure DNS para apuntar a la IP del servidor. Cuando ingreso el nombre de host especificado ( myapplication.mycompany.com) en el navegador, veo la página de bienvenida de NGINX:

ingrese la descripción de la imagen aquí

Cuando ingreso una URL que espero que devuelva el número de versión de la aplicación, veo un 404:

myapplication.mycompany.com/version.txt

Cuando ejecuto systemctl status myservicename, veo que el servicio .NET Core se inicia y que el servicio principal se ejecuta de la siguiente manera:

   CGroup: /system.slice/myservicename.service
           └─...PID... /usr/bin/dotnet /var/aspnetcore/myservicename/myservice.dll

Cuando miro /var/aspnetcore/myservicename/wwwroot, veo el archivo.version.txt

curl -v localhost:5000devuelve un 302 found, indicando Server: Kestrel, entonces yocreerque Kestrel está prestando el servicio en el puerto 5000

Cuando miro la configuración de NGINX en elproducciónVM (que es una imagen muy similar, que ejecuta una instancia comparable del servicio .NET Core), no veo nada que parezca estar realizando una conexión especial con Kestrel. Miro la configuración de NGINX usando:

cat /etc/nginx/nginx.conf

cat /etc/nginx/conf.d

(Estos archivos parecen idénticos a los de la VM de desarrollo)

¿Dónde debería buscar para determinar cuál es la configuración para enrutar solicitudes a la aplicación .NET Core? ¿Y hay algo obvio que pueda estar causando el 404 cuando lo solicito ...hostname.../version.txt?

ACTUALIZAR

Descubrí que /etc/nginx/sites-available/defaulten el servidor web NGINX hay algunas de las configuraciones principales. Entonces agregué una configuración para el nombre del servidor que coincide con mi nombre de host.

server {
    listen 80;
    server_name myapplication.mycompany.com;

Cuando lo visito myapplication.mycompany.com/version.txttodavía recibo el 404:

Respuesta1

Descubrí que hay 2 archivos de configuración que determinan la disponibilidad de un sitio web:

/etc/nginx/sites-available/default

/etc/nginx/sites-enabled/default

Ambos necesitan una configuración de enrutamiento similar para determinar los sitios web que están disponibles y habilitados en el servidor NGINX:

Ambos archivos de configuración configuran el puerto (80) que NGINX usa para escuchar solicitudes y configuran el nombre del servidor, que vincula el nombre de host DNS de Azure al servidor web NGINX:

server {
    listen 80;
    server_name myapplication.mycompany.com;

La configuración también determina cómo las solicitudes se realizan mediante proxy inverso (esencialmente 'reenviadas') a Kestrel, donde la aplicación maneja las solicitudes a través del enrutamiento .NET Core MVC.

location / {
    ... cacheing stuff

proxy_pass <http://localhost:5000;>

información relacionada