Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

210
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda