Cómo habilitar el encabezado HTTP de charset correcto en NGINX

39

¿Cuál es la forma correcta de habilitar los encabezados de juego de caracteres correctos en NGINX?

Estoy analizando mi sitio web con Google Page Speed. Dice que debería especificar el juego de caracteres de los archivos HTML en los encabezados HTTP. ¿Cuál es la forma correcta de hacer esto?

Ya intenté establecer charset utf-8;la server {}declaración de mi archivo de configuración NGINX, pero no tuvo ningún efecto.

Mi servidor responde con el siguiente encabezado:

Connection: keep-alive
Date: Fri, 16 Sep 2011 12:43:24 GMT
Last-Modified: Fri, 02 Sep 2011 15:13:17 GMT
Server: nginx/0.7.67

Gracias.

pvorb
fuente
El enlace ya no funciona.
Pothi Kalimuthu

Respuestas:

38

Agregar charset utf-8;es prácticamente todo lo que necesitas hacer. ¿Está seguro de que no olvidó volver a cargar nginx después de cambiar el archivo de configuración?

Además al momento de escribir, curl -I http://vorb.de/ devuelve el siguiente resultado:

HTTP/1.1 200 OK
Server: nginx/0.7.67
Date: Fri, 16 Sep 2011 13:20:03 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 1705
Last-Modified: Fri, 02 Sep 2011 15:13:17 GMT
Connection: keep-alive
Vary: Accept-Encoding
Accept-Ranges: bytes

Entonces todo se ve bien ahora.

Vladimir Blaskov
fuente
22

Establecer el juego de caracteres podría no funcionar si no configura la directiva "charset_types" que desea para UTF-8.

Por ejemplo: cuando configura "charset utf-8;", todo HTML se reflejará, pero no los archivos JSON, porque no están configurados de manera predeterminada en "charset_types".

http://nginx.org/en/docs/http/ngx_http_charset_module.html#charset_types

Shun wee
fuente
5

Es posible que también deba ajustar la charset_typesconfiguración para incluir el tipo mime para el que desea establecer la configuración del juego de caracteres (por ejemplo, el texto / calendario no está incluido allí de forma predeterminada).

Por lo que vale, creo que text/*debería manejarse de forma predeterminada, pero no puede usarlo aquí (como con Apache IIRC).

Ver http://nginx.org/en/docs/http/ngx_http_charset_module.html#charset_types

azulado
fuente
2
    charset utf-8;
    source_charset utf-8;

Es lo que necesitas No funcionará para mí a menos que tenga ambos.

Escándalo Leroy
fuente