Tengo un servidor Ubuntu que ejecuta NGINX como un proxy inverso a una API web ASP.NET Core 2.2, y tengo problemas para diagnosticar un error de servidor 500. Sigo recibiendo solicitudes a la API.
Revisé todos los registros que puedo ver en /var/logs, los registros de la aplicación que están configurados para rastrear y los registros de errores de nginx que están configurados para depurar. Sin embargo, no hay idea de dónde está el error.
Todas las solicitudes a la API fallan con la misma respuesta 500, excepto una que es el punto final del token de autenticación IdentityServer que sí funciona. Eso se ejecuta en la misma API.
Sospecho que el problema puede estar al principio de la canalización de solicitudes, antes de que entre en las acciones de mi controlador.
Hay una base de datos de SQL Server en el servidor, pero no se accede a ella para las solicitudes particulares que estoy intentando, así que lo descarto.
Mi pregunta es ¿dónde más puedo mirar para ver qué está pasando? Debe ser algo relacionado con la aplicación, ya que eso es lo único que ha cambiado, y otro sitio que se ejecuta detrás de NGINX en la misma máquina funciona bien, así que no culpo a la configuración de NGINX.
Cuando revierto todo el servidor a una copia de seguridad antes de que se realizara la implementación, todo funciona bien. La implementación del código de la aplicación rompe algo, pero no puedo averiguar qué o por qué.
La respuesta de error 500 es muy simple sin los encabezados habituales. NGINX se ha configurado para agregar muchos más encabezados de respuesta que este.
HTTP/1.1 500 Internal Server Error Server: nginx Date: Thu, 05 Mar 2020 21:12:54 GMT Content-Length: 0 Connection: keep-alive Keep-Alive: timeout=30
El problema estaba en un código dentro de un constructor que se llamaba durante el inicio de la aplicación durante la creación de instancias de inyección de dependencia.
No hubo ningún problema al desarrollar localmente con 'dotnet run', pero al publicar los archivos en el modo Depurar o Liberar, arrojó una excepción.
El error se encontró después de agregar esta línea al método Startup.Configure:
app.UseDeveloperExceptionPage();Esto me permitió ver el error claramente de inmediato. Este error no se vio en ningún otro registro, y el error solo ocurrió cuando se ejecutaban archivos publicados, de ahí la dificultad para diagnosticar el problema.