โลโก้ Nginx
อันดับ 3 ใน Top 100 Web Server และ ProxyBSD 2-Clause (โอเพนซอร์ส)

Nginx คืออะไร และวิธีติดตั้งบน Cloud Server

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

หมวดหมู่
Web Server และ Proxy
ติดตั้งบนเซิร์ฟเวอร์เองได้
ได้
สเปกเริ่มต้นที่แนะนำ
1 vCPU · RAM 1 GB
ไลเซนส์
BSD 2-Clause (โอเพนซอร์ส)
เว็บทางการ
เปิดเว็บไซต์
สร้าง Cloud Server เดี๋ยวนี้
  • 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 บน Cloud Server หนึ่งเครื่องที่ Data Center ในประเทศไทย ผู้ใช้เข้าถึงผ่านไฟร์วอลล์ที่เปิดเฉพาะพอร์ต 80, 443 ตัว Nginx และข้อมูลอยู่บนเครื่องเดียวกัน เริ่มต้นที่ 1 vCPU แรม 1 GB และมีสำเนาสำรองเขียนออกไปเก็บอีกไซต์หนึ่ง
Nginx ทำงานบน Cloud Server เครื่องเดียวได้ครบ เปิดเฉพาะพอร์ตที่จำเป็น ข้อมูลและสำเนาสำรองอยู่ใน Data Center ในประเทศไทย

ความสามารถเด่นของ 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 ที่แนะนำ

แผนภาพเทียบสเปก Cloud Server สำหรับ Nginx 3 ระดับ เริ่มจาก 1 vCPU แรม 1 GB ดิสก์ NVMe 20 GB ไปจนถึง 4 vCPU ขึ้นไป แรม 8 GB ขึ้นไป ดิสก์ NVMe 80 GB ขึ้นไป โดยเทียบขนาดแยกตามแต่ละคอลัมน์
เริ่มจากระดับที่ตรงกับการใช้งานตอนนี้ แล้วเพิ่ม CPU และ RAM ทีหลังได้บนเครื่องเดิม
ระดับการใช้งานvCPURAMDisk
เริ่มต้นเว็บ Static หรือ Proxy หน้าแอปเล็ก1 vCPU1 GBNVMe 20 GB
แนะนำเว็บ PHP ทั่วไปพร้อม PHP-FPM2 vCPU4 GBNVMe 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. 1

    ติดตั้ง Nginx

    sudo apt update
    sudo apt -y install nginx
    sudo systemctl enable --now nginx
  2. 2

    เปิดพอร์ตบน Firewall

    sudo ufw allow 'Nginx Full'
    sudo ufw status
  3. 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. 4

    ตรวจไวยากรณ์แล้วรีโหลด

    sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl reload nginx
  5. 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

พอร์ตโปรโตคอลใช้ทำอะไร
80TCPHTTP และการตรวจสอบโดเมนของ Let's Encrypt
443TCPHTTPS (รวม 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 ให้ฟรี บน Cloud Server ในไทย

แจ้งความต้องการสั้น ๆ ทีมวิศวกรจะช่วยประเมินสเปก ติดตั้ง และตั้งค่าความปลอดภัยให้พร้อมใช้งาน ปรึกษาฟรี ไม่มีข้อผูกมัด