뚠뚠멍의 생각들

การตั้งค่าหลักในการใช้ nginx เป็นเว็บเซิร์ฟเวอร์

สร้าง: 2024-09-26

สร้าง: 2024-09-26 21:20

Nginx เป็นโอเพนซอร์สที่ใช้กันอย่างแพร่หลายเป็นเว็บเซิร์ฟเวอร์หรือเว็บพร็อกซีเซิร์ฟเวอร์

หากกำหนดค่าได้อย่างเหมาะสม สามารถให้บริการเนื้อหาแบบคงที่ได้อย่างมีประสิทธิภาพ

ฉันต้องการบันทึกการตั้งค่าที่สำคัญบางอย่าง


การตั้งค่าที่สำคัญบางอย่างที่เกี่ยวข้องกับประสิทธิภาพ

1. การบีบอัด gzip

เมื่อโหลดเว็บไซต์ คุณจะได้รับไฟล์มากมายจากเว็บเซิร์ฟเวอร์ เช่น JavaScript, รูปภาพ, HTML และ CSS

แทนที่จะส่งเนื้อหานี้ในรูปแบบดั้งเดิม การใช้การบีบอัด gzip สามารถลดปริมาณข้อมูลที่ส่งได้อย่างมีนัยสำคัญ


กล่าวคือ เมื่อนำไปใช้แล้ว

- ปริมาณข้อมูลลดลง ส่งผลให้ประหยัดแบนด์วิดท์

- สามารถประหยัดทรัพยากรเซิร์ฟเวอร์ได้

- สำหรับผู้ใช้ ความเร็วในการโหลดจะเร็วขึ้นจริง ๆ


ในทางกลับกัน เนื่องจากเซิร์ฟเวอร์ต้องดำเนินการบีบอัด gzip ก่อนที่จะตอบกลับเนื้อหา การใช้ CPU ของเซิร์ฟเวอร์อาจเพิ่มขึ้น

จำเป็นต้องมีการทดสอบก่อนที่จะนำไปใช้ในระดับการดำเนินงาน เช่น ประเภทของไฟล์ที่จะบีบอัด ระดับการบีบอัด และขนาดของไฟล์ที่จะบีบอัด


ต่อไปนี้เป็นการตั้งค่าบางอย่างที่เกี่ยวข้องกับ gzip

* gzip_vary บอกให้เซิร์ฟเวอร์สามารถส่งเนื้อหาในเวอร์ชันที่บีบอัดและเวอร์ชันที่ไม่ได้บีบอัดตามว่าไคลเอนต์รองรับ gzip หรือไม่ (แจ้งให้ทราบว่าเนื้อหาเวอร์ชันต่างๆ อาจมีให้บริการตามส่วนหัวของคำขอของไคลเอนต์ (Accept-Encoding))


2. การตั้งค่า proxy_buffer

nginx จะเก็บการตอบกลับไว้ในบัฟเฟอร์ก่อนที่จะส่งไปยังไคลเอนต์

เมื่อเว็บเซิร์ฟเวอร์ส่งการตอบกลับไปยังไคลเอนต์ หากความเร็วของไคลเอนต์ช้า เซิร์ฟเวอร์จะต้องรอส่งข้อมูลต่อไป (ปัญหาคอขวดของเครือข่าย)

ในกรณีนี้ เนื่องจากเซิร์ฟเวอร์ยังคงใช้ทรัพยากรอยู่ จึงใช้บัฟเฟอร์เพื่อจัดการการตอบกลับชั่วคราวโดยไม่คำนึงถึงความเร็วในการประมวลผลของไคลเอนต์ ซึ่งจะทำให้ได้ประโยชน์ดังต่อไปนี้

- การปรับให้เหมาะสมกับภาระของเซิร์ฟเวอร์

- ลดปัญหาคอขวดของเครือข่าย

※ หากตั้งค่าขนาดของบัฟเฟอร์ให้ใหญ่เกินไป การส่งข้อมูลแบบเรียลไทม์ เช่น การสตรีมข้อความ อาจล่าช้า ดังนั้นจึงจำเป็นต้องมีการทดสอบ โดยเฉพาะอย่างยิ่งเนื่องจากมีบริการที่เกี่ยวข้องกับ AI จำนวนมากออกมาในปัจจุบัน หากการสตรีมข้อความไม่ทำงาน ตรวจสอบการตั้งค่านี้ให้แน่ใจ


3. การตั้งค่า worker และ http

worker คือกระบวนการที่ประมวลผลคำขอของไคลเอนต์ และสามารถตั้งค่าจำนวน worker ที่จะใช้สำหรับแต่ละคอร์ CPU ของเซิร์ฟเวอร์ได้

โดยทั่วไปแล้ว http คือคำขอ - การเชื่อมต่อ - การตอบกลับ - การปิดการเชื่อมต่อ แต่เพื่อลดทรัพยากรในการเชื่อมต่อสำหรับคำขอหลายครั้ง คุณสามารถรักษาการเชื่อมต่อของไคลเอนต์ไว้ได้ นี่คือการตั้งค่า keep alive

เหตุผลที่รวมสองอย่างนี้เข้าด้วยกันมีดังนี้

หากเซิร์ฟเวอร์ที่ใช้มี 4 คอร์ จำนวนการเชื่อมต่อที่เป็นไปได้ทางทฤษฎีคือ 1,024 * 4 = 4,096

(อาจไม่ถูกต้องตามทรัพยากรหรือสภาพแวดล้อมการรับส่งข้อมูล)

เมื่อไคลเอนต์ 4,096 รายเชื่อมต่อพร้อมกันและใช้ keepalive ทั้งหมดเป็นเวลา 65 วินาที

หากผู้ใช้คนที่ 4,097 พยายามเชื่อมต่อ การเชื่อมต่อจะไม่สามารถทำได้ ส่งผลให้การตอบกลับล่าช้า


ดังนั้น หากสมมติว่าทรัพยากรเซิร์ฟเวอร์มีความเสถียร เช่น การปรับขนาดอัตโนมัติ หากเกิดความล่าช้าในการตอบกลับในระหว่างเหตุการณ์ การตั้งค่าข้างต้นอาจส่งผลกระทบโดยอ้อม


4. อื่นๆ - บล็อก location

สามารถใช้การตั้งค่าบางอย่าง เช่น proxy buffer กับ URL ของคำขอแต่ละรายการได้

* การตั้งค่าบางอย่าง เช่น keep-alive ถูกนำไปใช้ในระดับ HTTP/Server และไม่สามารถตั้งค่าได้ทีละบล็อก

server {
listen 80;
server_name example.com;


การตั้งค่าข้างต้นสามารถใช้เพื่อเพิ่มประสิทธิภาพเว็บได้ ให้ทำการทดสอบอย่างละเอียดโดยพิจารณาจากกรณีทดสอบต่างๆ เพื่อปรับให้เหมาะสมกับประสิทธิภาพของเซิร์ฟเวอร์!

* สามารถใช้ nginx ที่มีการตั้งค่าที่เปลี่ยนแปลงแล้วโดยไม่มีการหยุดทำงานของเซิร์ฟเวอร์ ดังนั้นจึงมีความเสถียรมากที่สุด






ความคิดเห็น0

การใช้ Google Cloud Storage และ Cloud Run เพื่อใช้งาน CDN - 2บทความที่สองเกี่ยวกับวิธีการสร้าง CDN โดยใช้ Google Cloud Storage และ Cloud Run อธิบายวิธีการส่งภาพและไฟล์ข้อความที่ได้รับการปรับให้เหมาะสมที่สุด รวมถึงการกระจายทรัพยากรไปยัง 8 ภูมิภาคทั่วโลกเพื่อลดเวลาแฝง
두루미스 기술 블로그
두루미스 기술 블로그
두루미스 기술 블로그
두루미스 기술 블로그

September 6, 2024

[สำหรับผู้ไม่ใช่ผู้เชี่ยวชาญ ด้านการพัฒนาซอฟต์แวร์ เพื่อความอยู่รอด] 14. สรุปเนื้อหาสัมภาษณ์ทางเทคนิคที่ผู้พัฒนาซอฟต์แวร์มือใหม่ถามบ่อยสรุปคำถามทางเทคนิคที่มักถามในการสัมภาษณ์งานผู้พัฒนาซอฟต์แวร์มือใหม่ (พื้นที่หน่วยความจำ โครงสร้างข้อมูล ฐานข้อมูล ฯลฯ) หวังว่าจะเป็นประโยชน์ในการเตรียมตัวสัมภาษณ์งานด้านการพัฒนา
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

April 3, 2024

[DB] เกณฑ์การตั้งค่าแคชบทความนี้จะแนะนำเกณฑ์การตั้งค่าแคชของฐานข้อมูลและตัวอย่างการใช้งานจริง รวมถึงวิธีการแคชข้อมูลที่อ่านบ่อยและเขียนน้อย โดยเฉพาะอย่างยิ่งการรักษาความใหม่ล่าสุดของข้อมูลผ่านการตั้งค่า TTL
제이온
제이온
제이온
제이온

April 25, 2024

ใช้ Cloud Run ในการให้บริการไฟล์ Static - 1บทความบล็อกเกี่ยวกับวิธีการใช้ Google Cloud Run ในการให้บริการไฟล์แบบคงที่ มุ่งเน้นไปที่การเปลี่ยนเส้นทางและการปรับปรุงประสิทธิภาพ
두루미스 기술 블로그
두루미스 기술 블로그
두루미스 기술 블로그
두루미스 기술 블로그

September 4, 2024

บันทึกการสร้างเว็บไซต์หลายภาษา - วันที่ 21 เทคนิคการจัดการเว็บไซต์หลายภาษา!วันที่ 21 ของการสร้างเว็บไซต์หลายภาษา แชร์เคล็ดลับการใช้ประโยชน์จากเซิร์ฟเวอร์ Hostinga และประวัติโดเมนเดิมเพื่อการจัดทำดัชนีและการจัดการที่รวดเร็ว การดำเนินการบล็อกอย่างต่อเนื่องมีความสำคัญ และมีแผนจะโพสต์บทความวันละ 1-2 ชิ้น
aghkuh1
aghkuh1
aghkuh1
aghkuh1

January 17, 2025

[บันทึกการสร้างเว็บไซต์หลายภาษา - วันที่ 33] การตั้งค่าเว็บไซต์เสร็จสมบูรณ์!สร้างเว็บไซต์หลายภาษาเสร็จสมบูรณ์ภายใน 33 วัน! แก้ปัญหาความล่าช้าในการแปลโดยการเปลี่ยนตำแหน่งเซิร์ฟเวอร์และตั้งค่าทุกอย่างเสร็จสมบูรณ์แล้ว ควรส่ง sitemap หลังจากตั้งค่าทุกอย่างเสร็จเรียบร้อยแล้ว
aghkuh1
aghkuh1
aghkuh1
aghkuh1

January 29, 2025