Nginx (อ่านว่า “Engine-X”) คือเว็บเซิร์ฟเวอร์ที่ทำงานด้วยสถาปัตยกรรม event-driven ซึ่งออกแบบมาเพื่อให้มีประสิทธิภาพสูง ใช้ทรัพยากรน้อย และสามารถจัดการการเชื่อมต่อพร้อมกันจำนวนมากได้อย่างมีประสิทธิภาพ ต่างจาก Apache ที่ใช้สถาปัตยกรรม process-based หรือ thread-based ทำให้ Nginx กลายเป็นตัวเลือกยอดนิยมสำหรับการสร้าง Cloud VPS ที่ต้องการประสิทธิภาพสูงสุด
บทความนี้จะอธิบายรายละเอียดเกี่ยวกับ Nginx คืออะไร ประวัติความเป็นมา วิธีการทำงาน คุณสมบัติหลัก และวิธีการติดตั้งและตั้งค่า Nginx บน Cloud VPS ของคุณ เพื่อให้คุณเข้าใจและสามารถใช้เว็บเซิร์ฟเวอร์ทรงพลังนี้ได้อย่างเต็มที่
Nginx คืออะไร — บทนำเบื้องต้น
Nginx เป็นเว็บเซิร์ฟเวอร์แบบเปิดซอร์ส (Open Source) ที่เก่าแก่และขึ้นชื่อในการจัดการการเชื่อมต่อพร้อมกันจำนวนมหาศาล โดยใช้หน่วยความจำและทรัพยากร CPU น้อยกว่าเว็บเซิร์ฟเวอร์แบบดั้งเดิมอย่าง Apache HTTP Server มากมาย Nginx ไม่ได้เพียงแค่เป็นเว็บเซิร์ฟเวอร์ธรรมดาเท่านั้น แต่สามารถทำหน้าที่เป็น Reverse Proxy, Load Balancer, HTTP Cache, หรือ Mail Proxy ได้อีกด้วย
การใช้ Nginx บน Cloud VPS นั้นเป็นทางเลือกที่ฉลาด เนื่องจากมันช่วยให้คุณได้รับประสิทธิภาพสูงสุดจากทรัพยากรเซิร์ฟเวอร์ที่คุณจ่ายเงินไป และสามารถรองรับจำนวนผู้ใช้งานพร้อมกันได้มากขึ้นโดยไม่จำเป็นต้องปรับขยายระบบ
ประวัติความเป็นมา — Igor Sysoev และการสร้าง Nginx
Nginx ถูกสร้างขึ้นในปี 2002 โดย Igor Sysoev ซึ่งเป็นนักพัฒนาซอฟต์แวร์ชาวรัสเซีย เขาออกแบบ Nginx เพื่อแก้ปัญหา “C10K Problem” หรือปัญหาการจัดการการเชื่อมต่อกว่า 10,000 ครั้งพร้อมกัน ซึ่งเป็นปัญหาใหญ่ของเว็บเซิร์ฟเวอร์แบบดั้งเดิมในยุคนั้น
Nginx ได้ถูกเปิดตัวต่อสาธารณะในปี 2004 และได้รับความนิยมอย่างรวดเร็วจากชุมชนนักพัฒนา เนื่องจากประสิทธิภาพและความเสถียรของมันนั้นดีกว่าเว็บเซิร์ฟเวอร์ตัวอื่น ๆ มาก ปัจจุบัน Nginx ถูกใช้โดย Airbnb, Netflix, Dropbox, GitHub, และหลาย ๆ บริษัทขนาดใหญ่อื่น ๆ ในโลก
วิธีการทำงานของ Nginx — Event-Driven Architecture
สาเหตุที่ Nginx มีประสิทธิภาพสูงเพราะมันใช้สถาปัตยกรรม “Event-Driven” แบบ asynchronous ที่ต่างจากเว็บเซิร์ฟเวอร์แบบดั้งเดิมอย่าง Apache ที่ใช้แนวทาง “Process-Based” หรือ “Thread-Based” ดังนี้:
Apache ใช้ Process-Based หรือ Thread-Based
Apache จะสร้าง Process หรือ Thread ใหม่สำหรับแต่ละการเชื่อมต่อ (Connection) ของผู้ใช้งาน ซึ่งหมายความว่าหากมีผู้ใช้งาน 1,000 คนพร้อมกัน Apache จะต้องสร้าง Process หรือ Thread ได้ 1,000 ตัว ทำให้ใช้หน่วยความจำและทรัพยากร CPU จำนวนมากมาย
Nginx ใช้ Event-Driven Architecture
Nginx ใช้วิธีการที่ชาญฉลาดมากขึ้น โดยใช้ Single Process หรือกี่ Process เท่านั้น (ขึ้นอยู่กับจำนวน CPU Cores) และใช้ Event Loop (Epoll, Kqueue, หรือ IOCTL) ในการตรวจสอบและจัดการการเชื่อมต่อจากผู้ใช้งานพร้อมกัน ทำให้สามารถจัดการการเชื่อมต่อหลายพันหรือหลายแสนครั้งพร้อมกันได้ด้วยหน่วยความจำและ CPU ที่น้อยกว่ามาก
คุณสมบัติหลักของ Nginx
Nginx มีคุณสมบัติและความสามารถดังนี้:
- Web Server — Nginx สามารถทำหน้าที่เป็นเว็บเซิร์ฟเวอร์เพื่อเสิร์ฟไฟล์เว็บไซต์ (HTML, CSS, JavaScript, Images) ได้อย่างมีประสิทธิภาพสูง
- Reverse Proxy — Nginx สามารถทำหน้าที่เป็น Reverse Proxy เพื่อจัดส่ง (Forward) คำขอจากผู้ใช้งานไปยัง Backend Server ต่างๆ ได้ เช่น Application Server (Node.js, Python, etc.) ทำให้ Nginx สามารถแยกตัวออกจาก Application Logic และทำให้ประสิทธิภาพดีขึ้น
- Load Balancer — Nginx สามารถจัดสรรภาระงาน (Distribute Load) ให้กับ Backend Servers หลายตัวได้อย่างเท่าเทียมกัน (Round-robin, Least connections, IP Hash, Weight) ทำให้สามารถรองรับจำนวนผู้ใช้งานพร้อมกันได้มากขึ้น
- HTTP Cache — Nginx สามารถแคช (Cache) เนื้อหาของเว็บไซต์ได้ เพื่อให้การตอบสนอง (Response) เร็วขึ้น และลดภาระของ Backend Server
- SSL/TLS Termination — Nginx สามารถจัดการ HTTPS และถอดรหัส (Decrypt) SSL/TLS ได้ ทำให้ Backend Servers ไม่ต้องจัดการอีกครั้ง
- URL Rewriting — Nginx สามารถเขียนใหม่ (Rewrite) URLs ได้ ซึ่งเป็นประโยชน์สำหรับการปรับแต่ง URLs และ SEO Optimization
- Mail Proxy — นอกจากเว็บแล้ว Nginx ยังสามารถทำหน้าที่เป็น Mail Proxy สำหรับ IMAP, POP3, และ SMTP ได้อีกด้วย
วิธีการติดตั้ง Nginx บน Cloud VPS
ตอนนี้เรามาเรียนรู้วิธีการติดตั้ง Nginx บน Cloud VPS ของคุณกัน ขั้นตอนนี้เหมาะสำหรับระบบปฏิบัติการที่ใช้ Debian/Ubuntu หรือ Linux บน Cloud VPS ของคุณ
ขั้นตอนที่ 1: อัพเดท Package Manager
ก่อนเริ่มการติดตั้ง ให้อัพเดท Package Manager (apt-get) บน Cloud VPS ของคุณ:
sudo apt-get update
ขั้นตอนที่ 2: ติดตั้ง Nginx
ติดตั้ง Nginx โดยใช้คำสั่ง apt-get ดังนี้:
sudo apt-get install -y nginx
ขั้นตอนที่ 3: เริ่มการทำงาน Nginx
เมื่อติดตั้ง Nginx เสร็จแล้ว ให้เริ่มการทำงานของ Nginx:
sudo systemctl start nginx
ขั้นตอนที่ 4: เปิดใช้งาน Nginx ให้ทำงานอัตโนมัติในแต่ละครั้งที่ Boot
เพื่อให้ Nginx เริ่มทำงานอัตโนมัติในแต่ละครั้งที่ Boot Server ของคุณ ให้ใช้คำสั่ง:
sudo systemctl enable nginx
ขั้นตอนที่ 5: ตรวจสอบสถานะของ Nginx
ตรวจสอบว่า Nginx ทำงานอยู่ หรือไม่:
sudo systemctl status nginx
การตั้งค่า Nginx เบื้องต้น
ไฟล์การตั้งค่าหลักของ Nginx อยู่ที่ /etc/nginx/nginx.conf โครงสร้างพื้นฐานของไฟล์นี้มีลักษณะดังนี้:
user nginx;
worker_processes auto; # จำนวน Worker Processes
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024; # จำนวนการเชื่อมต่อต่อ Worker Process
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# Include Server Blocks
include /etc/nginx/conf.d/*.conf;
}
สำหรับการตั้งค่า Server Block (Virtual Host) ของแต่ละเว็บไซต์ ให้สร้างไฟล์ใหม่ในโฟลเดอร์ /etc/nginx/conf.d/ หรือ /etc/nginx/sites-available/ ดังนี้:
server {
listen 80;
server_name example.com www.example.com;
# ตั้งค่า Root Directory
root /var/www/html/example.com;
# ตั้งค่า Index File
index index.html index.htm index.php;
# ตั้งค่า Logging
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
# ตั้งค่า PHP-FPM (ถ้าใช้ PHP)
location ~ \\.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
}
# ป้องกันการเข้าถึงไฟล์ที่มีความไว (Hide sensitive files)
location ~ /\. {
deny all;
}
}
ตัวอย่าง: Reverse Proxy ด้วย Nginx
หากคุณต้องการใช้ Nginx เป็น Reverse Proxy สำหรับ Node.js Application ให้ตั้งค่าดังนี้:
server {
listen 80;
server_name example.com www.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
ตัวอย่าง: Load Balancing ด้วย Nginx
หากคุณมี Backend Servers หลายตัว คุณสามารถใช้ Nginx เป็น Load Balancer ได้ดังนี้:
upstream backend {
server 192.168.1.10:8000;
server 192.168.1.11:8000;
server 192.168.1.12:8000;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
การตั้งค่า SSL/TLS สำหรับ HTTPS
เพื่อให้เว็บไซต์ของคุณใช้ HTTPS ให้ปลอดภัย ต้องติดตั้ง SSL Certificate ก่อน จากนั้นตั้งค่า Nginx ดังนี้:
server {
listen 443 ssl http2;
server_name example.com www.example.com;
# ตั้งค่า SSL Certificate
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# ตั้งค่า SSL Protocols และ Ciphers
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# ตั้งค่า Root Directory
root /var/www/html/example.com;
index index.html index.htm;
location / {
# ตัวอย่าง: Reverse Proxy ไปยัง Backend Server
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
# Redirect HTTP ไปยัง HTTPS
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
คำสั่ง Nginx ที่สำคัญ
มีคำสั่ง Nginx ที่สำคัญและมีประโยชน์ที่คุณควรรู้จัก:
| คำสั่ง | คำอธิบาย |
| sudo systemctl start nginx | เริ่มการทำงาน Nginx |
| sudo systemctl stop nginx | หยุดการทำงาน Nginx |
| sudo systemctl restart nginx | รีสตาร์ท Nginx |
| sudo systemctl reload nginx | โหลดการตั้งค่า Nginx ใหม่โดยไม่หยุดการทำงาน |
| sudo systemctl status nginx | ตรวจสอบสถานะของ Nginx |
| sudo systemctl enable nginx | เปิดใช้งาน Nginx ให้ทำงานอัตโนมัติ |
| sudo systemctl disable nginx | ปิดใช้งาน Nginx อัตโนมัติ |
| sudo nginx -t | ตรวจสอบความถูกต้องของไฟล์ config |
| sudo nginx -s reload | โหลดการตั้งค่าใหม่ |
สรุป
Nginx เป็นเว็บเซิร์ฟเวอร์ที่มีประสิทธิภาพสูง ใช้ทรัพยากรน้อย และสามารถจัดการการเชื่อมต่อจำนวนมหาศาลได้ ไม่ว่าคุณจะต้องการเซิร์ฟเว็บไซต์ทั่วไป ใช้เป็น Reverse Proxy สำหรับ Application Servers หรือใช้เป็น Load Balancer สำหรับการกระจายภาระงาน Nginx นั้นมีความสามารถที่สำคัญและมีประโยชน์มากมายที่สามารถช่วยให้ระบบของคุณมีประสิทธิภาพสูงสุด
บทความนี้ได้อธิบายวิธีการติดตั้ง ตั้งค่า และใช้งาน Nginx บน Cloud VPS ของคุณแล้ว หากคุณมีคำถามหรือต้องการข้อมูลเพิ่มเติม โปรดอ่านเอกสารอย่างเป็นทางการของ Nginx ได้ที่ https://nginx.org หรือติดต่อทีมสนับสนุน DE เพื่อได้รับความช่วยเหลือเพิ่มเติมในการติดตั้งและตั้งค่า Nginx บน Cloud VPS ของคุณ
แนะนำบริการ DE — Cloud VPS และ Cloud Hosting
หากคุณกำลังมองหา Cloud VPS หรือ Cloud Hosting ที่มีประสิทธิภาพสูง มีความเสถียร และด้วยการสนับสนุนจากทีม Support ที่มีความรู้ด้วย DE นั้นเป็นตัวเลือกที่ดีที่สุด ทีมของเรารู้จักการติดตั้งและการตั้งค่า Nginx ได้อย่างลึกซึ้ง และพร้อมที่จะช่วยเหลือคุณในการตั้งค่า Nginx หรือทำงานอื่น ๆ ที่เกี่ยวข้อง
นอกจากนี้ หลาย ๆ แพ็คเกจของ DE Cloud Hosting นั้นมี Nginx ติดตั้งให้เรียบร้อยแล้ว และเพียงแค่ที่ว่าต้องเพิ่มไซต์เว็บใหม่ก็เสร็จแล้ว ทำให้ประหยัดเวลาในการติดตั้งและตั้งค่า และคุณสามารถเน้นความสำคัญของคุณไปที่การพัฒนาเว็บไซต์ของคุณแทน
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับบริการ DE และการเลือก Cloud VPS หรือ Cloud Hosting ที่เหมาะสมกับความต้องการของคุณ โปรดเยี่ยมชม DE Cloud VPS หรือเลือกใช้ DE Cloud Hosting ที่มาพร้อม Nginx ติดตั้งให้ พร้อมทีม Customer Support ที่พร้อมช่วยเหลือคุณตลอด 24 ชั่วโมง

