Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

209
Vistas
Nginx comprime tipos mime con parámetros

Tengo Nginx proxy inverso de mi servicio que funciona con el protocolo OData. Estoy tratando de habilitar la compresión para estas solicitudes poniendo

 #... gzip on; gzip_types application/json; #... server { #... location /odata/ { proxy_pass http://localhost:7700/odata/; } #... }

en nginx.conf.

A veces mi servicio regresa

Tipo de contenido: aplicación/json; juego de caracteres=utf-8; odata.metadata=mínimo

y Nginx lo comprime.

Pero a veces mi servicio vuelve

Tipo de contenido: aplicación/json; odata.metadata=mínimo; odata.transmisión=verdadero; conjunto de caracteres = utf-8

y Nginx no comprime tales respuestas.

¿Qué debo hacer para permitir que Nginx comprima tales respuestas?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Resolví este problema escribiendo middleware en mi aplicación, que cambia el encabezado de tipo de contenido y lo transforma en application/json; charset=utf-8; odata.metadata=minimal; odata.streaming=true;

Después de eso, Nginx podría reconocerlo como tipo de contenido json y comprimirlo.

over 4 years ago · Santiago Trujillo Denunciar

0

Permítanme agregar mi solución para ASP.NET Core.

Sin embargo, tenga en cuenta que estas respuestas están fragmentadas, por lo que el parámetro gzip_min_length de Nginx no funcionará y las respuestas pequeñas también se comprimirán, lo que aumentará el tamaño y reducirá el rendimiento.

 /// <summary> /// Middleware to reorder Content-Type parts for Nginx compression. /// </summary> public class FixODataMiddlewareForNginx { readonly RequestDelegate _next; public FixODataMiddlewareForNginx(RequestDelegate next) { _next = next; } public async Task Invoke(HttpContext context) { context.Response.OnStarting(() => { var contentType = context.Response.GetTypedHeaders().ContentType; if (contentType != null && contentType.Parameters.Count > 0 && !contentType.Charset.HasValue) { contentType.Parameters.Insert(0, new NameValueHeaderValue("charset", "utf-8")); context.Response.Headers["Content-Type"] = contentType.ToString(); } return Task.CompletedTask; }); await _next.Invoke(context); } }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda