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