web-dev-qa-db-fra.com

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

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

J'analyse mon site Web 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. Quelle est la bonne façon de procéder?

J'ai déjà essayé de définir charset utf-8; dans le 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

Je vous remercie.

40
pvorb

Ajouter charset utf-8; est à peu près tout ce que vous devez faire. Êtes-vous sûr de ne pas avoir oublié 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.

41
Vladimir Blaskov

La définition du jeu de caractères peut ne pas fonctionner si vous ne définissez pas la directive "charset_types" que vous souhaitez utiliser UTF-8.

Par exemple: lorsque vous définissez "charset utf-8;", tout le HTML se reflétera, 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

22
Shun wee

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

Pour ce que ça 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

5
blueyed
    charset utf-8;
    source_charset utf-8;

C'est ce dont vous avez besoin. Cela ne fonctionnera pas pour moi à moins d'avoir les deux.

3
Leroy Scandal