2011-07-09 21 views

Respuesta

39

Esto es del nginx documentation.

gzip_vary 
syntax: gzip_vary on|off 
default: gzip_vary off 
context: http, server, location 

Permite la cabecera de la respuesta de "Vary: Accept-Encoding". Tenga en cuenta que este encabezado hace que IE 4-6 no almacene en caché el contenido debido a un error (consulte 2).

Allí si solo agregas gzip_vary on; debería hacer su trabajo.

También asegúrese de tener alguna de las directivas gzip, gzip_static o gunzip activas.

+2

Creo que esta NO es la respuesta correcta, al menos, no solo, y tal vez no para todas las versiones de nginx (esto no puedo decirlo). gzip_vary solo PERMITIRÁ gzip si está desactivado, pero conservará los gzip_types predeterminados y no habilitará Variar para recursos diferentes del texto predeterminado/html mimetype. http://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip (probado en nginx 1.4.6) –

+0

@AlanFranzoni esta pregunta no tiene nada que ver con habilitar gzip o hacer que codifique otros tipos de contenido, solo se trata de agregando el encabezado vary – jbg

+0

@jbg Creo que malinterpretaste el propósito de Vary, que a menudo se usa con compresión (echa un vistazo a https://www.fastly.com/blog/best-practices-for-using-the-vary-header). Si gzip y vary no tienen nada que ver juntos, ¿por qué la opción nginx se llamará gzip_vary? –

24

Dentro de la server { del dominio/subdominio que desea establecer, añadir

gzip on; 
    gzip_min_length 1100; 
    gzip_buffers 4 32k; 
    gzip_types text/plain application/x-javascript text/xml text/css; 
    gzip_vary on; 

guardar el archivo y reinicie nginx.

+4

por lo que puedo decir, esta es la única respuesta correcta. gzip_types es la clave aquí, ya que el valor predeterminado es solo text/html, por lo tanto, vary no estará habilitado para diferentes tipos de contenido. –

+1

Funcionó muy bien en mi archivo vhost en mi servidor nginx. ¡Gracias! – jamescampbell

1

Simple. En Nginx conf:

vim /etc/nginx/nginx.conf 

Añadir la siguiente cerca de la parte inferior de la sección:

## 
    # Gzip Settings 
    ## 

    gzip on; 
    gzip_disable "msie6"; 

    # gzip_vary on; 
    # gzip_proxied any; 
    # gzip_comp_level 6; 
    # gzip_buffers 16 8k; 
    # gzip_http_version 1.1; 
    # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; 

Sólo Descomentar el parámetro gzip_vary on; y reiniciar o volver a cargar el servicio nginx:

service nginx restart 

Esto debería solucionar la cuestión. Si está ejecutando una versión anterior de nginx, es posible que necesite habilitar gzip on;, ya que esto es necesario para que el encabezado vary funcione.

Espero que esto ayude. FYI, esto se aplica a todos los archivos conf de servidor/sitio a menos que se sobrescriban en sus respectivos bloques de servidor respectivos. server {}

información Fuente de nginx, Apache y IIS: https://www.maxcdn.com/blog/accept-encoding-its-vary-important/

+0

Deshabilitar gzip_types traerá más problemas. –

0

Si has probado las otras respuestas y sigue viendo variar fuera (por ejemplo, si está probando la velocidad de su página usando GTMetrix), lo siguiente podría ayuda:

Asegúrese de que todos sus gzip_types también estén configurados en la sección /etc/nginx/nginx.conf http.

El bloque de servidor en/etc/nginx/sites-available/* es un lugar donde puede configurar el encabezado vary y gzip_types, pero dependiendo de cómo tenga la configuración del sitio, puede procesar y devolver archivos antes de que alcanzar ese bit de config.

En /etc/nginx/nginx.conf encontrará una sección 'http' - aquí, también hay un gzip_types y gzip_vary.

Para mí, CSS y JS son archivos estáticos y estaban siendo servidos antes de presionar el archivo (disponible en wordpress) sitios disponibles (tengo barniz delante de él).

Así que al agregar la lista completa de gzip_types a la sección http en nginx.conf solucioné mi problema.

Cuestiones relacionadas