Nginx คืออะไร และวิธีติดตั้งบน Cloud Server
Nginx คือเว็บเซิร์ฟเวอร์และ Reverse Proxy ที่ออกแบบมาให้รับการเชื่อมต่อจำนวนมากพร้อมกันโดยใช้หน่วยความจำน้อย จึงเป็นชั้นหน้าสุดของเว็บไซต์ที่มีทราฟฟิกสูงเกือบทุกแห่งในปัจจุบัน
- หมวดหมู่
- Web Server และ Proxy
- ติดตั้งบนเซิร์ฟเวอร์เองได้
- ได้
- สเปกเริ่มต้นที่แนะนำ
- 1 vCPU · RAM 1 GB
- ไลเซนส์
- BSD 2-Clause (โอเพนซอร์ส)
- เว็บทางการ
- เปิดเว็บไซต์
- ISO/IEC 27001
- ISO 22301
- ISO 20000-1
- CSA-STAR
Data Center ในไทย มาตรฐาน TIA-942 Tier 3+ ข้อมูลอยู่ในประเทศไทย
Nginx คืออะไร
Nginx ทำงานแบบ Event-driven คือใช้กระบวนการไม่กี่ตัวรับการเชื่อมต่อพร้อมกันหลักหมื่น ต่างจากรูปแบบเดิมที่สร้างกระบวนการหรือเธรดใหม่ต่อหนึ่งผู้ใช้ ผลคือรับทราฟฟิกสูงได้บนเครื่องสเปกเท่าเดิม
นอกจากเสิร์ฟไฟล์เว็บ Nginx ยังทำหน้าที่ Reverse Proxy ส่งต่อคำขอไปยังแอปเบื้องหลัง เช่น Node.js, Python หรือ Java ทำ Load Balancer กระจายโหลดไปหลายเครื่อง และทำแคชเนื้อหาเพื่อลดภาระของแอป
สำหรับงานเว็บ PHP อย่าง WordPress นิยมใช้คู่กับ PHP-FPM ซึ่งเร็วกว่าการรัน PHP ผ่านโมดูลในเว็บเซิร์ฟเวอร์แบบเดิม แต่ต้องเขียนกฎ Rewrite เอง เพราะ Nginx ไม่รองรับไฟล์ .htaccess
ความสามารถเด่นของ Nginx
รับผู้ใช้พร้อมกันได้มาก
สถาปัตยกรรมแบบ Event-driven ใช้ RAM ต่อการเชื่อมต่อน้อยมาก เหมาะกับเว็บที่มีคนออนไลน์พร้อมกันสูง
Reverse Proxy และ Load Balancer
กระจายทราฟฟิกไปหลายเครื่องหลังบ้าน พร้อมตรวจสุขภาพเซิร์ฟเวอร์และถอดเครื่องที่ล่มออกอัตโนมัติ
แคชเนื้อหาในตัว
เก็บผลลัพธ์ที่สร้างจากแอปไว้ตอบผู้ใช้คนถัดไป ลดโหลดของ PHP และฐานข้อมูลได้หลายเท่า
รองรับ HTTP/2 และ HTTP/3
ลดเวลาโหลดหน้าเว็บบนอุปกรณ์มือถือและเครือข่ายที่หน่วงสูง
จำกัดอัตราการเรียกได้
ตั้ง Rate Limit เพื่อกันบอทและการยิงคำขอถี่ผิดปกติได้ตั้งแต่ชั้นหน้าสุด
ใช้ Nginx ทำอะไรได้บ้าง
- ชั้นหน้าของเว็บ WordPress, Laravel และเว็บ PHP อื่น ๆ คู่กับ PHP-FPM
- Reverse Proxy หน้าแอป Node.js, Python และ Java ที่รันอยู่ในเครื่องเดียวกัน
- Load Balancer กระจายทราฟฟิกไปยัง Cloud Server หลายเครื่อง
- เสิร์ฟไฟล์ Static และสื่อจำนวนมากด้วยทรัพยากรต่ำ
สเปก Cloud Server ที่แนะนำ
| ระดับการใช้งาน | vCPU | RAM | Disk |
|---|---|---|---|
| เริ่มต้นเว็บ Static หรือ Proxy หน้าแอปเล็ก | 1 vCPU | 1 GB | NVMe 20 GB |
| แนะนำเว็บ PHP ทั่วไปพร้อม PHP-FPM | 2 vCPU | 4 GB | NVMe 40 GB |
| ทราฟฟิกสูงชั้นหน้าของระบบที่มีผู้ใช้พร้อมกันหลักพัน | 4 vCPU ขึ้นไป | 8 GB ขึ้นไป | NVMe 80 GB ขึ้นไป |
ดูราคาตามสเปกได้ที่ ราคา Cloud Compute หรือให้ทีมงานช่วยประเมินสเปกจากปริมาณผู้ใช้จริงของคุณ
วิธีติดตั้ง Nginx บน Cloud Server ของ THAI DATA CLOUD
ขั้นตอนด้านล่างใช้กับ Cloud Server ที่เพิ่งสร้างใหม่จากหน้าจัดการของ THAI DATA CLOUD ได้ทันที ถ้าไม่สะดวกทำเอง ทีมวิศวกรของเราติดตั้งและตั้งค่าให้ฟรีสำหรับลูกค้า Cloud Server
สิ่งที่ต้องเตรียม
- Ubuntu Server 24.04 LTS หรือ Rocky Linux 9
- สิทธิ์ sudo บนเครื่อง
- โดเมนที่ชี้ A record มาที่ไอพีของเซิร์ฟเวอร์ (ถ้าต้องการ HTTPS)
ทดสอบบน Ubuntu Server 24.04 LTS
- 1
ติดตั้ง Nginx
sudo apt update sudo apt -y install nginx sudo systemctl enable --now nginx - 2
เปิดพอร์ตบน Firewall
sudo ufw allow 'Nginx Full' sudo ufw status - 3
สร้าง Virtual Host ของเว็บไซต์
สร้างไฟล์ /etc/nginx/sites-available/example.com ตามตัวอย่าง แล้วสร้างลิงก์ไปที่ sites-enabled
server { listen 80; server_name example.com www.example.com; root /var/www/example.com; index index.html index.php; location / { try_files $uri $uri/ =404; } # กรณีเว็บ PHP ให้เปิดบล็อกนี้ # location ~ \.php$ { # include snippets/fastcgi-php.conf; # fastcgi_pass unix:/run/php/php8.3-fpm.sock; # } } - 4
ตรวจไวยากรณ์แล้วรีโหลด
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx - 5
ออกใบรับรอง SSL ฟรี
Certbot จะแก้ไฟล์ตั้งค่าให้รองรับ HTTPS และตั้งงานต่ออายุอัตโนมัติให้เอง
sudo apt -y install certbot python3-certbot-nginx sudo certbot --nginx -d example.com -d www.example.com
ถ้าใช้เป็น Reverse Proxy ให้แทน block location ด้วย proxy_pass http://127.0.0.1:3000; พร้อมส่งต่อ header Host และ X-Forwarded-For
พอร์ตที่ต้องเปิดบน Firewall
| พอร์ต | โปรโตคอล | ใช้ทำอะไร |
|---|---|---|
| 80 | TCP | HTTP และการตรวจสอบโดเมนของ Let's Encrypt |
| 443 | TCP | HTTPS (รวม HTTP/2 และ HTTP/3 ที่ใช้ UDP 443) |
สิ่งที่ควรทำต่อหลังติดตั้งเสร็จ
- ปิดการแสดงเวอร์ชันด้วย server_tokens off; เพื่อไม่บอกใบ้ข้อมูลให้ผู้โจมตี
- บังคับ HTTPS ด้วยการ redirect จากพอร์ต 80 และเปิด HSTS
- ตั้ง limit_req เพื่อกันการยิงคำขอถี่ผิดปกติไปยังหน้าเข้าสู่ระบบ
- ปิดโปรโตคอลเก่าอย่าง TLS 1.0 และ 1.1 ให้เหลือ TLS 1.2 ขึ้นไป
- ตั้ง Log rotation และส่ง Log ไปยังระบบรวม Log เพื่อตรวจย้อนหลังได้
ทำไมควรรัน Nginx บน Cloud Server ของ THAI DATA CLOUD
Data Center ในประเทศไทย มาตรฐาน ISO/IEC 27001 และ ISO 22301 พร้อมทีมวิศวกรคนไทยดูแลตลอด 24 ชั่วโมง
Nginx กินทรัพยากรน้อยมาก จึงคุ้มค่าเมื่อรันเป็นชั้นหน้าบน Cloud Server ขนาดเล็กในไทย และขยายเครื่องได้ทันทีเมื่อทราฟฟิกโต
วางเป็น Load Balancer หน้าหลาย Cloud Server ในวง Private Network เดียวกันได้ โดยไม่คิดค่าทราฟฟิกภายใน
ผู้ชมคนไทยได้ค่า Latency ต่ำเพราะเซิร์ฟเวอร์อยู่ใน Data Center ในประเทศ
คำถามที่พบบ่อยเกี่ยวกับ Nginx
Nginx กับ Apache ต่างกันอย่างไร ควรใช้ตัวไหน
Nginx รับผู้ใช้พร้อมกันได้มากกว่าและกิน RAM น้อยกว่าเมื่อเสิร์ฟไฟล์และทำ Proxy ส่วน Apache ยืดหยุ่นกว่าเรื่องการตั้งค่าระดับโฟลเดอร์ผ่าน .htaccess ซึ่งจำเป็นกับสคริปต์เก่าบางตัว เว็บใหม่ส่วนใหญ่เลือก Nginx และใช้ Apache เฉพาะเมื่อระบบเดิมผูกกับ .htaccess
Nginx ใช้ .htaccess ได้ไหม
ไม่ได้ Nginx ไม่มีกลไกไฟล์ตั้งค่าระดับโฟลเดอร์โดยตั้งใจ เพราะจะทำให้ต้องอ่านไฟล์ทุกคำขอและช้าลง ต้องแปลงกฎเดิมไปเขียนใน server block แทน ซึ่งทีมงานของเราช่วยแปลงให้ได้
ตั้ง HTTPS ฟรีได้จริงไหม
ได้ ใช้ Certbot กับ Let's Encrypt ออกใบรับรองฟรีและต่ออายุอัตโนมัติทุก 90 วัน เพียงชี้โดเมนมาที่เซิร์ฟเวอร์และเปิดพอร์ต 80 ไว้สำหรับการตรวจสอบ
เว็บช้าทั้งที่ใช้ Nginx แล้ว เกิดจากอะไร
ส่วนใหญ่คอขวดไม่ได้อยู่ที่ Nginx แต่อยู่ที่แอปเบื้องหลังหรือฐานข้อมูล ลองเปิดแคชที่ชั้น Nginx, เพิ่ม worker ของ PHP-FPM และตรวจคิวรีที่ช้า ถ้า CPU เต็มตลอดแปลว่าถึงเวลาเพิ่มสเปกเครื่อง
ทางเลือกอื่นที่คล้ายกับ Nginx
แอปอื่นในหมวด Web Server และ Proxy
- #8Apache HTTP Serverเว็บเซิร์ฟเวอร์รุ่นคลาสสิกที่รองรับ .htaccess
- #35TraefikReverse Proxy สำหรับยุค Container
- #36HAProxyLoad Balancer ระดับ Production
- #37Caddyเว็บเซิร์ฟเวอร์ที่ออก SSL อัตโนมัติ
- Envoy ProxyService Proxy สำหรับสถาปัตยกรรม Microservices
- Nginx Proxy Managerจัดการ Reverse Proxy และ SSL จากหน้าเว็บ
บริการของ THAI DATA CLOUD ที่เกี่ยวข้อง
ให้เราติดตั้ง Nginx ให้ฟรี บน Cloud Server ในไทย
แจ้งความต้องการสั้น ๆ ทีมวิศวกรจะช่วยประเมินสเปก ติดตั้ง และตั้งค่าความปลอดภัยให้พร้อมใช้งาน ปรึกษาฟรี ไม่มีข้อผูกมัด