PlusMagi's Blog By Pitt Phunsanit

Nginx: กำหนดการโหลด Configuration

การเข้าใจลำดับการโหลด Configuration ของ Nginx เป็นเรื่องสำคัญมากครับ เพราะจะช่วยให้คุณไล่เช็คได้ว่าทำไม Setting ที่เราเขียนถึงไม่ทำงาน หรือทำไมเกิด Error เวลา Start service


🏗️ ลำดับการโหลด Configuration ของ Nginx

โดยปกติ Nginx จะเริ่มอ่านไฟล์จาก “บนลงล่าง” ตามโครงสร้างดังนี้ครับ

  1. Main Configuration
    ไฟล์หลักที่อยู่ที่ /etc/nginx/nginx.conf จะถูกโหลดเป็นอันดับแรก โดยภายในไฟล์นี้จะกำหนดค่าระดับ Global เช่น
    • User / Group ที่ใช้รัน Process
    • Worker Processes
    • Error Log
    • PID file
  2. The http Block
    ภายใน nginx.conf จะมี Block ที่ชื่อว่า http { ... } ซึ่งจะรวบรวมการตั้งค่าสำหรับ Web Traffic ทั้งหมด
    • การโหลด MIME Types
    • การตั้งค่า Log Format
    • Gzip compression
    • Include Statement: นี่คือจุดสำคัญที่ Nginx จะไปดึงไฟล์อื่นมาอ่านเพิ่ม
  3. Modular Configs
    ใน http block มักจะมีคำสั่ง include เพื่อดึงไฟล์จากโฟลเดอร์อื่นมาประกอบร่างกัน โดยลำดับมาตรฐานคือ

Server Blocks

เมื่ออ่านไฟล์เข้ามาแล้ว Nginx จะตัดสินใจเลือกใช้ server block ตามลำดับความสำคัญ ไม่ได้เรียงตามบรรทัดเสมอไป

  1. เช็คจาก IP Address และ Port ที่ตรงที่สุด
  2. เช็คจาก server_name ที่ตรงกันแบบเป๊ะ ๆ
  3. เช็คจาก Wildcard (เช่น *.example.com)
  4. ถ้าไม่เจอเลย จะไปลงที่ default_server

Location Blocks

เมื่อเลือก Server ได้แล้ว Nginx จะดู URI ว่าจะให้ทำอะไรต่อ โดยเรียงลำดับความดังนี้

  1. =: ตรงกันเป๊ะ ๆ
  2. ^~: ตรงส่วนหน้า และหยุดหาต่อ
  3. ~ หรือ ~*: ตรงตาม Regular Expression
  4. /: ถ้าไม่ตรงกับอะไรเลย

💡 สรุปแผนผังการโหลด

ลำดับส่วนประกอบหน้าที่หลัก
1nginx.conf ตั้งค่าพื้นฐานของ OS และ Process
2http Contextตั้งค่าการรับส่งข้อมูลเว็บและดึงไฟล์ Include
3server Blockแยกแยะตาม Domain Name หรือ IP
4location Blockจัดการ Request ตาม Path

ทุกครั้งหลังแก้ไขไฟล์เสร็จ ให้รันคำสั่ง sudo nginx -t เพื่อตรวจสอบ Syntax ก่อนสั่ง Reload เสมอครับ เพื่อป้องกัน Service พังจากความผิดพลาดในการพิมพ์


อ่านเพิ่มเติม

Exit mobile version