Comment activer l'en-tête HTTP correct du jeu de caractères dans NGINX

39

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

J'analyse mon site avec Google Page Speed. Il dit que je devrais spécifier le jeu de caractères des fichiers HTML dans les en-têtes HTTP. Quel est le bon moyen de le faire?

J'ai déjà essayé de définir charset utf-8;la server {}déclaration de mon fichier de configuration NGINX, mais cela n'a 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

Merci.

pvorb
la source
Le lien ne fonctionne plus.
Pothi Kalimuthu

Réponses:

38

L'ajout charset utf-8;est à peu près tout ce que vous devez faire. Etes-vous sûr de ne pas oublier de recharger nginx après avoir modifié le fichier de configuration?

En plus, au moment de l'écriture, curl -I http://vorb.de/ renvoie 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

Donc, tout va bien maintenant.

Vladimir Blaskov
la source
22

La définition du jeu de caractères risque de ne pas fonctionner si vous ne définissez pas la directive "charset_types" pour laquelle vous voulez UTF-8.

Par exemple: lorsque vous définissez "charset utf-8;", tout le code HTML sera reflété, mais pas les fichiers JSON, car ils ne sont pas définis par défaut sur "charset_types".

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

Shun wee
la source
5

Vous devrez peut-être également ajuster le charset_typesparamètre pour inclure le type MIME pour lequel vous souhaitez définir le paramètre jeu de caractères (par exemple, le texte / le calendrier n'y est pas inclus par défaut).

Pour ce que cela vaut, je pense que cela text/*devrait être traité 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

blueyed
la source
2
    charset utf-8;
    source_charset utf-8;

Est ce que vous avez besoin. Cela ne fonctionnera pour moi que si j'ai les deux.

Leroy Scandal
la source