it-swarm.com.de

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

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

Ich analysiere meine Website mit Google Page Speed. Es heißt, dass ich den Zeichensatz von HTML-Dateien in HTTP-Headern angeben sollte. Was ist der richtige Weg, dies zu tun?

Ich habe bereits versucht, charset utf-8; in dem server {} Deklaration meiner NGINX-Konfigurationsdatei, aber keine Auswirkung.

Mein Server antwortet mit folgendem 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

Vielen Dank.

40
pvorb

Hinzufügen von 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 gibt curl -I http://vorb.de/ zum Zeitpunkt des Schreibens das folgende Ergebnis zurück:

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 also alles in Ordnung aus.

41

Das Festlegen des Zeichensatzes funktioniert möglicherweise nicht, wenn Sie nicht die Direktive "charset_types" festlegen, für die Sie UTF-8 verwenden möchten.

Beispiel: Wenn Sie "charset utf-8;" festlegen, wird der gesamte HTML-Code angezeigt, jedoch nicht die JSON-Dateien, da diese nicht standardmäßig auf "charset_types" festgelegt sind.

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

22
Shun wee

Möglicherweise müssen Sie auch die charset_types Einstellung, um den MIME-Typ einzuschließen, für den Sie die Zeichensatzeinstellung festlegen möchten (z. B. Text/Kalender ist dort standardmäßig nicht enthalten).

Für das, was es wert ist, denke ich, dass text/* sollte 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

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

Ist was du brauchst. Es wird nicht für mich funktionieren, wenn ich nicht beide habe.

3
Leroy Scandal