Cara mengaktifkan charset HTTP-header yang benar di NGINX

39

Apa cara yang tepat untuk mengaktifkan header charset yang benar di NGINX?

Saya menganalisis situs web saya dengan Google Page Speed. Dikatakan bahwa saya harus menentukan charset dari file HTML di HTTP-header. Apa cara yang tepat untuk melakukan ini?

Saya sudah mencoba mengatur charset utf-8;dalam server {}deklarasi file konfigurasi NGINX saya, tetapi tidak ada efek apa pun.

Server saya merespons dengan tajuk berikut:

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

Terima kasih.

pvorb
sumber
Tautan tidak berfungsi lagi.
Pothi Kalimuthu

Jawaban:

38

Menambahkan charset utf-8;hampir semua yang perlu Anda lakukan. Yakin tidak memuat ulang nginx setelah Anda mengubah file konfigurasi?

Selain pada saat penulisan, curl -I http://vorb.de/ mengembalikan hasil berikut:

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

Jadi semuanya terlihat baik-baik saja sekarang.

Vladimir Blaskov
sumber
22

Mengatur charset mungkin tidak berfungsi jika Anda tidak mengatur "charset_types" direktif yang Anda inginkan UTF-8.

Sebagai contoh: Ketika Anda mengatur "charset utf-8;", semua HTML akan mencerminkan, tetapi bukan file JSON, karena mereka tidak diset secara default pada "charset_types".

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

Shun wee
sumber
5

Anda mungkin juga harus menyesuaikan charset_typespengaturan untuk memasukkan tipe mime yang ingin Anda atur pengaturan charset untuk (misalnya teks / kalender tidak termasuk di sana secara default).

Untuk apa nilainya saya pikir itu text/*harus ditangani secara default - tetapi Anda tidak dapat menggunakannya di sini (seperti dengan Apache IIRC).

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

kebiru-biruan
sumber
2
    charset utf-8;
    source_charset utf-8;

Itu yang kamu butuhkan. Ini tidak akan bekerja untuk saya kecuali saya memiliki keduanya.

Skandal Leroy
sumber