54 votes

Comment activer l'en-tête HTTP avec le charset correct dans NGINX ?

Quelle est la bonne façon d'activer les en-têtes de charset corrects dans NGINX ?

J'analyse mon site web avec Google Page Speed. Il indique que je dois spécifier le jeu de caractères des fichiers HTML dans les en-têtes HTTP. Quelle est la bonne façon de procéder ?

J'ai déjà essayé de définir charset utf-8; dans le server {} de mon fichier de configuration NGINX, mais cela n'a eu aucun effet.

Mon serveur répond avec l'en-tête suivant :

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

Nous vous remercions.

48voto

Vladimir Blaskov Points 6013

Ajout charset utf-8; c'est à peu près tout ce qu'il faut faire. Assurez-vous que vous n'avez pas oublié de recharger nginx après avoir modifié le fichier de configuration ?

D'ailleurs au moment de la rédaction, curl -I http://vorb.de/ donne le résultat suivant :

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

Tout semble donc en ordre maintenant.

29voto

Shun wee Points 291

La définition du charset peut ne pas fonctionner si vous n'avez pas défini la directive "charset_types" que vous voulez UTF-8.

Par exemple : Lorsque vous définissez "charset utf-8 ;", tous les fichiers HTML seront pris en compte, mais pas les fichiers JSON, car ils ne sont pas définis par défaut dans "charset_types".

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

8voto

Leroy Scandal Points 71
    charset utf-8;
    source_charset utf-8;

C'est ce dont vous avez besoin. Il ne fonctionnera pas pour moi si je n'ai pas de bo

6voto

GmNoob Points 1435

Il se peut que vous deviez également ajuster le charset_types pour inclure le type de mime pour lequel vous voulez définir le charset (par exemple, text/calendar n'est pas inclus par défaut).

Pour ce que cela vaut, je pense que text/* devrait être géré par défaut - mais vous ne pouvez pas l'utiliser ici (comme avec Apache IIRC).

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X