So aktivieren Sie den korrekten Zeichensatz-HTTP-Header in NGINX

39

Was ist der richtige Weg, um korrekte Zeichensatz-Header in NGINX zu aktivieren?

Ich analysiere meine Website mit Google Page Speed. Dort steht, dass ich den Zeichensatz von HTML-Dateien in HTTP-Headern angeben soll. Was ist der richtige Weg, um dies zu tun?

Ich habe bereits versucht, charset utf-8;die server {}Deklaration meiner NGINX-Konfigurationsdatei festzulegen, aber sie hat keine Auswirkungen.

Mein Server antwortet mit dem folgenden Header:

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

Danke.

pvorb
quelle
Der Link funktioniert nicht mehr.
Pothi Kalimuthu

Antworten:

38

Hinzufügen charset utf-8;ist so ziemlich alles, was Sie tun müssen. Sind Sie sicher, dass Sie nicht vergessen haben, nginx neu zu laden, nachdem Sie die Konfigurationsdatei geändert haben?

Außerdem liefert curl -I http://vorb.de/ zum Zeitpunkt des Schreibens das folgende Ergebnis:

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

Jetzt sieht alles in Ordnung aus.

Vladimir Blaskov
quelle
22

Das Festlegen des Zeichensatzes funktioniert möglicherweise nicht, wenn Sie nicht die Anweisung "charset_types" festlegen, für die UTF-8 gewünscht wird.

Zum Beispiel: Wenn Sie "charset utf-8;" einstellen, werden alle HTML-Dateien wiedergegeben, jedoch keine JSON-Dateien, da sie nicht standardmäßig auf "charset_types" eingestellt sind.

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

Meide die Kleine
quelle
5

Möglicherweise müssen Sie die charset_typesEinstellung auch so anpassen , dass sie den MIME-Typ enthält, für den Sie die Zeichensatz-Einstellung festlegen möchten (z. B. Text / Kalender ist dort standardmäßig nicht enthalten).

Für das, was es wert ist, denke ich, text/*sollte dies standardmäßig behandelt werden - aber Sie können es hier nicht verwenden (wie bei Apache IIRC).

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

bläulich
quelle
2
    charset utf-8;
    source_charset utf-8;

Ist was du brauchst. Es wird bei mir nicht funktionieren, wenn ich nicht beides habe.

Leroy-Skandal
quelle