From 5d2c577c5e205df4a878faff17703f18833cfd89 Mon Sep 17 00:00:00 2001 From: dmolinari Date: Tue, 17 Jun 2025 15:08:38 -0300 Subject: [PATCH] =?UTF-8?q?Se=20a=C3=B1ade=20nginx.conf=20personalizado=20?= =?UTF-8?q?y=20se=20expone=20swagger.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Backend/GestionIntegral.Api/Program.cs | 20 ++++++++++++-------- Frontend/Dockerfile | 3 +++ Frontend/nginx.conf | 19 +++++++++++++++++++ 3 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 Frontend/nginx.conf diff --git a/Backend/GestionIntegral.Api/Program.cs b/Backend/GestionIntegral.Api/Program.cs index 36e2402..8bc19cc 100644 --- a/Backend/GestionIntegral.Api/Program.cs +++ b/Backend/GestionIntegral.Api/Program.cs @@ -194,16 +194,20 @@ builder.Services.AddSwaggerGen(options => var app = builder.Build(); -// --- Configuración del Pipeline HTTP --- +// Habilitamos Swagger SIEMPRE, sin importar el entorno. +app.UseSwagger(); // Habilita el middleware para servir el JSON de Swagger +app.UseSwaggerUI(options => // Habilita el middleware para servir la UI de Swagger +{ + options.SwaggerEndpoint("/swagger/v1/swagger.json", "GestionIntegral API v1"); + // Opcional: Para que Swagger aparezca en la raíz de la API (ej: http://192.168.4.128:8081/) + options.RoutePrefix = string.Empty; +}); + + +// Mantenemos esta lógica solo para la página de error de desarrollo, si quieres. if (app.Environment.IsDevelopment()) { - app.UseSwagger(); // Habilita el middleware para servir el JSON de Swagger - app.UseSwaggerUI(options => // Habilita el middleware para servir la UI de Swagger - { - options.SwaggerEndpoint("/swagger/v1/swagger.json", "GestionIntegral API v1"); - // options.RoutePrefix = string.Empty; // Para servir la UI de Swagger en la raíz (ej: http://localhost:5183/) - // Comenta esto si prefieres /swagger (ej: http://localhost:5183/swagger/) - }); + // Aquí puedes dejar otras herramientas solo para desarrollo si las tuvieras. } // ¡¡¡NO USAR UseHttpsRedirection si la API corre en HTTP!!! diff --git a/Frontend/Dockerfile b/Frontend/Dockerfile index 4890354..7c68d90 100644 --- a/Frontend/Dockerfile +++ b/Frontend/Dockerfile @@ -16,6 +16,9 @@ RUN npm run build # --- Etapa 2: Serve --- # Usamos una imagen de Nginx súper ligera para servir los archivos estáticos. FROM nginx:stable-alpine +# Copiamos nuestro archivo de configuración personalizado a la carpeta de configuración de Nginx. +# Esto sobreescribirá la configuración por defecto. +COPY Frontend/nginx.conf /etc/nginx/conf.d/default.conf WORKDIR /usr/share/nginx/html # Eliminamos el index.html por defecto de Nginx. diff --git a/Frontend/nginx.conf b/Frontend/nginx.conf new file mode 100644 index 0000000..c962b18 --- /dev/null +++ b/Frontend/nginx.conf @@ -0,0 +1,19 @@ +# Este bloque de configuración se aplicará al servidor web. +server { + # Nginx escuchará en el puerto 80 dentro del contenedor. + listen 80; + + # La raíz de los documentos, donde están nuestros archivos de React. + root /usr/share/nginx/html; + + # Sirve el index.html por defecto para la ruta raíz. + index index.html; + + # Esta es la regla mágica para las SPAs. + location / { + # Intenta servir el archivo exacto que se pide (ej: /assets/logo.png). + # Si no lo encuentra, intenta servir una carpeta con ese nombre. + # Si tampoco la encuentra, como último recurso (fallback), sirve /index.html. + try_files $uri $uri/ /index.html; + } +} \ No newline at end of file