หัวข้อ
- #การตั้งค่า nginx
สร้าง: 2024-09-26
สร้าง: 2024-09-26 21:20
Nginx เป็นโอเพนซอร์สที่ใช้กันอย่างแพร่หลายเป็นเว็บเซิร์ฟเวอร์หรือเว็บพร็อกซีเซิร์ฟเวอร์
หากกำหนดค่าได้อย่างเหมาะสม สามารถให้บริการเนื้อหาแบบคงที่ได้อย่างมีประสิทธิภาพ
ฉันต้องการบันทึกการตั้งค่าที่สำคัญบางอย่าง
เมื่อโหลดเว็บไซต์ คุณจะได้รับไฟล์มากมายจากเว็บเซิร์ฟเวอร์ เช่น JavaScript, รูปภาพ, HTML และ CSS
แทนที่จะส่งเนื้อหานี้ในรูปแบบดั้งเดิม การใช้การบีบอัด gzip สามารถลดปริมาณข้อมูลที่ส่งได้อย่างมีนัยสำคัญ
กล่าวคือ เมื่อนำไปใช้แล้ว
- ปริมาณข้อมูลลดลง ส่งผลให้ประหยัดแบนด์วิดท์
- สามารถประหยัดทรัพยากรเซิร์ฟเวอร์ได้
- สำหรับผู้ใช้ ความเร็วในการโหลดจะเร็วขึ้นจริง ๆ
ในทางกลับกัน เนื่องจากเซิร์ฟเวอร์ต้องดำเนินการบีบอัด gzip ก่อนที่จะตอบกลับเนื้อหา การใช้ CPU ของเซิร์ฟเวอร์อาจเพิ่มขึ้น
จำเป็นต้องมีการทดสอบก่อนที่จะนำไปใช้ในระดับการดำเนินงาน เช่น ประเภทของไฟล์ที่จะบีบอัด ระดับการบีบอัด และขนาดของไฟล์ที่จะบีบอัด
ต่อไปนี้เป็นการตั้งค่าบางอย่างที่เกี่ยวข้องกับ gzip
* gzip_vary บอกให้เซิร์ฟเวอร์สามารถส่งเนื้อหาในเวอร์ชันที่บีบอัดและเวอร์ชันที่ไม่ได้บีบอัดตามว่าไคลเอนต์รองรับ gzip หรือไม่ (แจ้งให้ทราบว่าเนื้อหาเวอร์ชันต่างๆ อาจมีให้บริการตามส่วนหัวของคำขอของไคลเอนต์ (Accept-Encoding))
nginx จะเก็บการตอบกลับไว้ในบัฟเฟอร์ก่อนที่จะส่งไปยังไคลเอนต์
เมื่อเว็บเซิร์ฟเวอร์ส่งการตอบกลับไปยังไคลเอนต์ หากความเร็วของไคลเอนต์ช้า เซิร์ฟเวอร์จะต้องรอส่งข้อมูลต่อไป (ปัญหาคอขวดของเครือข่าย)
ในกรณีนี้ เนื่องจากเซิร์ฟเวอร์ยังคงใช้ทรัพยากรอยู่ จึงใช้บัฟเฟอร์เพื่อจัดการการตอบกลับชั่วคราวโดยไม่คำนึงถึงความเร็วในการประมวลผลของไคลเอนต์ ซึ่งจะทำให้ได้ประโยชน์ดังต่อไปนี้
- การปรับให้เหมาะสมกับภาระของเซิร์ฟเวอร์
- ลดปัญหาคอขวดของเครือข่าย
※ หากตั้งค่าขนาดของบัฟเฟอร์ให้ใหญ่เกินไป การส่งข้อมูลแบบเรียลไทม์ เช่น การสตรีมข้อความ อาจล่าช้า ดังนั้นจึงจำเป็นต้องมีการทดสอบ โดยเฉพาะอย่างยิ่งเนื่องจากมีบริการที่เกี่ยวข้องกับ AI จำนวนมากออกมาในปัจจุบัน หากการสตรีมข้อความไม่ทำงาน ตรวจสอบการตั้งค่านี้ให้แน่ใจ
worker คือกระบวนการที่ประมวลผลคำขอของไคลเอนต์ และสามารถตั้งค่าจำนวน worker ที่จะใช้สำหรับแต่ละคอร์ CPU ของเซิร์ฟเวอร์ได้
โดยทั่วไปแล้ว http คือคำขอ - การเชื่อมต่อ - การตอบกลับ - การปิดการเชื่อมต่อ แต่เพื่อลดทรัพยากรในการเชื่อมต่อสำหรับคำขอหลายครั้ง คุณสามารถรักษาการเชื่อมต่อของไคลเอนต์ไว้ได้ นี่คือการตั้งค่า keep alive
เหตุผลที่รวมสองอย่างนี้เข้าด้วยกันมีดังนี้
หากเซิร์ฟเวอร์ที่ใช้มี 4 คอร์ จำนวนการเชื่อมต่อที่เป็นไปได้ทางทฤษฎีคือ 1,024 * 4 = 4,096
(อาจไม่ถูกต้องตามทรัพยากรหรือสภาพแวดล้อมการรับส่งข้อมูล)
เมื่อไคลเอนต์ 4,096 รายเชื่อมต่อพร้อมกันและใช้ keepalive ทั้งหมดเป็นเวลา 65 วินาที
หากผู้ใช้คนที่ 4,097 พยายามเชื่อมต่อ การเชื่อมต่อจะไม่สามารถทำได้ ส่งผลให้การตอบกลับล่าช้า
ดังนั้น หากสมมติว่าทรัพยากรเซิร์ฟเวอร์มีความเสถียร เช่น การปรับขนาดอัตโนมัติ หากเกิดความล่าช้าในการตอบกลับในระหว่างเหตุการณ์ การตั้งค่าข้างต้นอาจส่งผลกระทบโดยอ้อม
สามารถใช้การตั้งค่าบางอย่าง เช่น proxy buffer กับ URL ของคำขอแต่ละรายการได้
* การตั้งค่าบางอย่าง เช่น keep-alive ถูกนำไปใช้ในระดับ HTTP/Server และไม่สามารถตั้งค่าได้ทีละบล็อก
server {
listen 80;
server_name example.com;
การตั้งค่าข้างต้นสามารถใช้เพื่อเพิ่มประสิทธิภาพเว็บได้ ให้ทำการทดสอบอย่างละเอียดโดยพิจารณาจากกรณีทดสอบต่างๆ เพื่อปรับให้เหมาะสมกับประสิทธิภาพของเซิร์ฟเวอร์!
* สามารถใช้ nginx ที่มีการตั้งค่าที่เปลี่ยนแปลงแล้วโดยไม่มีการหยุดทำงานของเซิร์ฟเวอร์ ดังนั้นจึงมีความเสถียรมากที่สุด
ความคิดเห็น0