NGINX คือ ตอนที่ 2 : Server Blocks และ HTTP Directives

  1. ทำความเข้าใจกับบล็อกเซิร์ฟเวอร์ (Server Blocks) ใน NGINX
  2. การสร้างบล็อกเซิร์ฟเวอร์ (Server Blocks) ใน NGINX
  3. คำสั่ง (Directives) HTTP ใน NGINX
    3.1 ให้บริการเนื้อหาคงที่ (Serving Static Content) ด้วย NGINX
    3.2 การจัดการเนื้อหาแบบไดนามิก (Dynamic Content)
  4. NGINX เป็นสะพาน (Bridge) เชื่อมระหว่างเว็บและแอป

ด้วยการหลั่งไหลของการเปลี่ยนแปลงทางดิจิทัล ระบบนิเวศของธุรกิจทั่วโลกได้เห็นการเปลี่ยนแปลงจากการทำเว็บและทำแอพแบบดั้งเดิมไปเป็นรูปแบบการทำเว็บและทำแอพแบบผสมผสานมากขึ้น ในแนวนอนนี้ การทำความเข้าใจบล็อกเซิร์ฟเวอร์และคำสั่ง HTTP ใน NGINX เป็นสิ่งสำคัญ ช่วยอำนวยความสะดวกในการสร้างสะพาน (bridge) เชื่อมระหว่างสภาพแวดล้อมของเว็บและแอป ช่วยให้นักพัฒนาสามารถทำเว็บและทำแอพที่แข็งแกร่ง ปรับขนาดได้ และปลอดภัย

1. ทำความเข้าใจกับบล็อกเซิร์ฟเวอร์ (Server Blocks) ใน NGINX

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

ลองนึกภาพสถานการณ์ที่คุณกำลังทำเว็บและทำแอพมือถือ และคุณต้องจัดการทราฟฟิกที่มาถึงทั้งสองอย่าง ด้วยการใช้บล็อกเซิร์ฟเวอร์ (Server Blocks) NGINX สามารถนำทราฟฟิกไปยังแอปพลิเคชันที่ถูกต้องตามโดเมนหรือที่อยู่ IP ของคำขอ

2. การสร้างบล็อกเซิร์ฟเวอร์ (Server Blocks) ใน NGINX

เพื่อสาธิตวิธีสร้างบล็อกเซิร์ฟเวอร์ ลองพิจารณาสถานการณ์ที่เรากำลังปรับใช้เว็บแอปพลิเคชันและแอปบนอุปกรณ์เคลื่อนที่ แอพทั้งสองมีชื่อโดเมนต่างกัน แต่โฮสต์บนเซิร์ฟเวอร์ NGINX เดียวกัน

ไฟล์กำหนดค่าบล็อกเซิร์ฟเวอร์เริ่มต้นสำหรับ NGINX อยู่ที่ ‘/etc/nginx/sites-available/default’ มาสร้างบล็อกเซิร์ฟเวอร์แยกกันสำหรับการทำเว็บ ‘webapp.com’ และการทำแอพมือถือ ‘mobileapp.com’:

server {
    listen 80;
    server_name webapp.com;

    location / {
        root /var/www/webapp;
        index index.html;
    }
}

server {
    listen 80;
    server_name mobileapp.com;

    location / {
        root /var/www/mobileapp;
        index index.html;
    }
}

บล็อก ‘server’ แต่ละบล็อกจะกำหนดวิธีที่ NGINX ควรตอบสนองต่อคำขอสำหรับเว็บหรือแอปบนอุปกรณ์เคลื่อนที่ คำสั่ง (directive) ‘listen’ บอกให้ NGINX รับฟังพอร์ต 80 (พอร์ต HTTP เริ่มต้น) คำสั่ง ‘server_name’ ระบุชื่อโดเมน บล็อก ‘location’ ระบุไดเรกทอรีรากที่เก็บไฟล์แอปพลิเคชัน และคำสั่ง ‘index’ ชี้ไปที่ไฟล์ดัชนีเริ่มต้น

3. คำสั่ง (Directives) HTTP ใน NGINX

คำสั่ง HTTP เป็นคำแนะนำสำหรับ NGINX ที่กำหนดวิธีจัดการการรับส่งข้อมูล HTTP มีการจัดระเบียบในโครงสร้างแบบลำดับชั้น ทำให้คุณสามารถควบคุมแอปพลิเคชันได้อย่างละเอียด

3.1 ให้บริการเนื้อหาคงที่ (Serving Static Content) ด้วย NGINX

หากต้องการแสดงเนื้อหาคงที่ เช่น ไฟล์ HTML, CSS และ JavaScript สำหรับการทำเว็บและทำแอพมือถือ ให้ใช้คำสั่ง ‘root’ และ ‘try_files’ ภายในบล็อก ‘location’:

server {
    listen 80;
    server_name webapp.com;

    location / {
        root /var/www/webapp;
        try_files $uri $uri/ =404;
    }
}

server {
    listen 80;
    server_name mobileapp.com;

    location / {
        root /var/www/mobileapp;
        try_files $uri $uri/ =404;
    }
}

คำสั่ง ‘try_files’ จะตรวจสอบการมีอยู่ของไฟล์ตามลำดับ และส่งกลับไฟล์แรกที่พบ ‘$uri’ พยายามให้บริการเส้นทาง URI ที่ร้องขอตามที่เป็นอยู่ ‘$uri/’ พยายามที่จะถือว่า URI เป็นไดเร็กทอรีและให้บริการไฟล์ ‘index’ เริ่มต้น ‘=404’ ส่งคืนข้อผิดพลาด 404 หากไม่พบไฟล์หรือไดเร็กทอรี

3.2 การจัดการเนื้อหาแบบไดนามิก (Dynamic Content)

NGINX ให้บริการเนื้อหาคงที่อย่างมีประสิทธิภาพ แต่ยังสามารถทำหน้าที่เป็นพร็อกซีย้อนกลับเพื่อจัดการเนื้อหาแบบไดนามิก ตัวอย่างเช่น หากเว็บและแอปมือถือในตัวอย่างของเราใช้เซิร์ฟเวอร์ Node.js ที่ทำงานบนพอร์ต 5000 คุณจะต้องตั้งค่าคำสั่ง ‘proxy_pass’:

server {
    listen 80;
    server_name webapp.com;

    location / {
        proxy_pass http://localhost:5000;
    }
}

server {
    listen 80;
    server_name mobileapp.com;

    location / {
        proxy_pass http://localhost:5000;
    }
}

ในการตั้งค่านี้ NGINX จะส่งคำขอทั้งหมดไปยังเซิร์ฟเวอร์ Node.js ซึ่งทำหน้าที่เป็นสะพานเชื่อมระหว่างไคลเอ็นต์และแอปพลิเคชัน

4. NGINX เป็นสะพาน (Bridge) เชื่อมระหว่างเว็บและแอป

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

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


ด้วยการใช้บล็อกเซิร์ฟเวอร์และคำสั่ง HTTP อย่างเหมาะสม NGINX จึงทำหน้าที่เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการพัฒนาเว็บและแอปสมัยใหม่ เป็นแพลตฟอร์มแบบครบวงจรสำหรับการโฮสต์แอปพลิเคชันหลายตัว ลดความซับซ้อนในการดูแลระบบ และปรับปรุงประสิทธิภาพแอปพลิเคชันโดยรวม

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


NGINX คืออะไร

NGINX คือ ตอนที่ 1 : การติดตั้งและการกำหนดค่าพื้นฐาน
NGINX คือ ตอนที่ 3 : การบันทึก (Logging) และการดีบัก (Debugging)