NGINX คือ ตอนที่ 1 : การติดตั้งและการกำหนดค่าพื้นฐาน

  1. การติดตั้ง NGINX
    ขั้นตอนที่ 1: อัปเดตแพ็คเกจระบบ
    ขั้นตอนที่ 2: ติดตั้ง NGINX
  2. การกำหนดค่าพื้นฐาน (Basic Configuration)
    2.1 ทำความเข้าใจกับ nginx.conf
    2.2 การสร้างบล็อกเซิร์ฟเวอร์ (Server Block)
  3. การปรับใช้ (Deployment) แอปพลิเคชันโดยใช้ NGINX

NGINX เป็นเซิร์ฟเวอร์ HTTP แบบโอเพ่นซอร์สอเนกประสงค์ ประสิทธิภาพสูง พร็อกซีเซิร์ฟเวอร์ย้อนกลับ (reverse proxy server) รวมถึงพร็อกซีเซิร์ฟเวอร์ IMAP/POP3 ความแข็งแกร่ง ความสามารถในการปรับขนาด และรูปแบบการกำหนดค่าที่เป็นนวัตกรรมทำให้เป็นตัวเลือกที่ผู้ดูแลระบบชื่นชอบสำหรับการทำเว็บและทำแอพมากมาย คู่มือนี้มุ่งเน้นไปที่การติดตั้งและการกำหนดค่าพื้นฐานของ NGINX

1. การติดตั้ง NGINX

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

ขั้นตอนที่ 1: อัปเดตแพ็คเกจระบบ

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

sudo apt-get update

ขั้นตอนที่ 2: ติดตั้ง NGINX

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

sudo apt-get install nginx

ตอนนี้ควรติดตั้ง NGINX ในระบบของคุณ คุณสามารถตรวจสอบการติดตั้งและเวอร์ชันของ NGINX ได้โดยใช้คำสั่ง:

nginx -v

2. การกำหนดค่าพื้นฐาน (Basic Configuration)

เมื่อติดตั้ง NGINX แล้ว ก็ถึงเวลาดำดิ่งสู่การกำหนดค่าพื้นฐาน ไฟล์การกำหนดค่าสำหรับ NGINX โดยทั่วไปจะจัดเก็บไว้ใน /etc/nginx ไฟล์การกำหนดค่าหลักคือ /etc/nginx/nginx.conf.

2.1 ทำความเข้าใจกับ nginx.conf

เมื่อคุณเปิดไฟล์ nginx.conf คุณจะสังเกตเห็นการตั้งค่าหลายอย่างที่อาจดูซับซ้อนเมื่อมองแวบแรก แต่เมื่อเข้าใจแล้วจะค่อนข้างตรงไปตรงมา ต่อไปนี้คือคำสั่งสำคัญบางประการในไฟล์ nginx.conf:

  • user: คำสั่งนี้กำหนดผู้ใช้ที่จะเรียกใช้กระบวนการของผู้ปฏิบัติงาน NGINX โดยทั่วไปจะตั้งค่าเป็นwww-dataหรือnginx
  • worker_processes: คำสั่งนี้กำหนดจำนวนกระบวนการของผู้ปฏิบัติงานที่จะถูกสร้างขึ้น โดยปกติแล้ว จะมีการกำหนดautoให้ NGINX ตัดสินใจตามจำนวนคอร์ของ CPU
  • pid: คำสั่งนี้ตั้งค่าไฟล์ที่เขียน ID กระบวนการเซิร์ฟเวอร์ (PID)
  • worker_connections: คำสั่งนี้ภายในeventsบล็อกกำหนดจำนวนสูงสุดของการเชื่อมต่อพร้อมกันต่อกระบวนการของผู้ปฏิบัติงาน
  • include: คำสั่งนี้มีไฟล์การกำหนดค่าอื่น

ในบล็อก http นี้ คุณจะพบคำสั่งที่สำคัญหลายข้อสำหรับการสร้างสภาพแวดล้อมของเว็บและแอป เช่น sendfile, tcp_nopush, tcp_nodelay ซึ่งมีความสำคัญต่อการปรับการแสดงไฟล์ให้เหมาะสม

2.2 การสร้างบล็อกเซิร์ฟเวอร์ (Server Block)

สำหรับการให้บริการหน้าเว็บ คุณจะต้องสร้างบล็อก server แต่ละบล็อก server สอดคล้องกับหนึ่งเว็บไซต์ โดยทั่วไปบล็อกเซิร์ฟเวอร์เหล่านี้ไม่ได้เขียนโดยตรง nginx.conf แต่รวมมาจากไฟล์อื่น

บล็อกเซิร์ฟเวอร์ถูกจัดเก็บไว้ใน /etc/nginx/sites-available/ พร้อมลิงก์สัญลักษณ์ใน /etc/nginx/sites-enabled/ ไดเร็กทอรี

มาสร้างบล็อกเซิร์ฟเวอร์สำหรับเว็บไซต์ตัวอย่างกัน:

สร้างไฟล์การกำหนดค่าใหม่ใน /etc/nginx/sites-available/:

sudo nano /etc/nginx/sites-available/mywebsite

บล็อกเซิร์ฟเวอร์พื้นฐานมีลักษณะดังนี้:

server {
    listen 80;
    server_name mywebsite.com www.mywebsite.com;
    
    location / {
        root /var/www/mywebsite;
        index index.html;
    }
}

คำสั่ง listen จะบอกให้ NGINX ฟังพอร์ตที่ระบุ (80 ในกรณีนี้) คำสั่ง server_name จะระบุโดเมนของเว็บไซต์ของคุณ และบล็อก location จะบอก NGINX ว่าจะค้นหาไฟล์สำหรับเว็บไซต์นี้ได้ที่ไหน

เมื่อตั้งค่าบล็อกเซิร์ฟเวอร์ของคุณแล้ว ให้เปิดใช้งานโดยสร้างลิงก์สัญลักษณ์ (symbolic link) ไปยังไดเร็กทอรี sites-enabled:

sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/

จากนั้น ทดสอบการกำหนดค่า:

sudo nginx -t

หากการทดสอบสำเร็จ ให้โหลด NGINX ใหม่เพื่อใช้การเปลี่ยนแปลง:

sudo systemctl reload nginx

เว็บไซต์ของคุณควรสามารถเข้าถึงได้ผ่านโดเมนของคุณ

3. การปรับใช้ (Deployment) แอปพลิเคชันโดยใช้ NGINX

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

ในบริบทของ NGINX สิ่งนี้ทำได้โดยใช้บล็อก location ในการกำหนดค่าเซิร์ฟเวอร์:

server {
    listen 80;
    server_name myapp.com;
    
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

http://localhost:3000ในกรณีนี้ NGINX ทำหน้าที่เป็นพร็อกซีย้อน กลับสำหรับแอป Node.js ที่ทำงานบน คำขอทั้งหมดจะถูก myapp.com ส่งต่อไปยังแอปพลิเคชัน Node.js


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

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


NGINX คืออะไร

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