วิธีเปิดใช้งาน HTTP header ที่ถูกต้องใน NGINX


39

วิธีที่เหมาะสมในการเปิดใช้งานส่วนหัวของชุดอักขระที่ถูกต้องใน NGINX คืออะไร

ฉันกำลังวิเคราะห์เว็บไซต์ด้วย Google Page Speed มันบอกว่าฉันควรระบุชุดอักขระของไฟล์ HTML ในส่วนหัว HTTP วิธีที่ถูกต้องในการทำเช่นนี้คืออะไร?

ฉันได้ลองตั้งค่าcharset utf-8;ในการserver {}ประกาศไฟล์การกำหนดค่า NGINX ของฉันแล้ว แต่ก็ไม่มีผลใด ๆ

เซิร์ฟเวอร์ของฉันตอบกลับด้วยส่วนหัวต่อไปนี้:

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

ขอขอบคุณ.


ลิงค์ไม่ทำงานอีกต่อไป
Pothi Kalimuthu

คำตอบ:


38

การเพิ่มcharset utf-8;เป็นสิ่งที่คุณต้องทำ แน่ใจหรือไม่ว่าคุณไม่ลืมโหลดnginxหลังจากเปลี่ยนไฟล์กำหนดค่าแล้ว

นอกจากนี้ในขณะที่เขียนCurl -I http://vorb.de/จะส่งคืนผลลัพธ์ต่อไปนี้:

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

ตอนนี้ทุกอย่างดูโอเค


22

การตั้งค่าชุดอักขระอาจไม่ทำงานหากคุณไม่ได้ตั้งค่าคำสั่ง "charset_types" ซึ่งคุณต้องการ UTF-8

ตัวอย่างเช่น: เมื่อคุณตั้งค่า "charset utf-8;" HTML ทั้งหมดจะแสดงผล แต่ไม่ใช่ไฟล์ JSON เนื่องจากไม่ได้ตั้งค่าตามค่าเริ่มต้นใน "charset_types"

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


5

คุณอาจต้องปรับการcharset_typesตั้งค่าเพื่อรวมประเภท mime ที่คุณต้องการตั้งค่าชุดอักขระสำหรับ (เช่นข้อความ / ปฏิทินจะไม่รวมอยู่ในค่าเริ่มต้น)

สำหรับสิ่งที่คุ้มค่าฉันคิดว่าtext/*ควรจัดการโดยค่าเริ่มต้น - แต่คุณไม่สามารถใช้งานได้ที่นี่ (เช่นเดียวกับ Apache IIRC)

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


2
    charset utf-8;
    source_charset utf-8;

คือสิ่งที่คุณต้องการ มันจะไม่ทำงานสำหรับฉันถ้าฉันไม่มีทั้งคู่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.