คืออะไร NGINX
เว็บเซิร์ฟเวอร์และรีเวิร์สพร็อกซี
NGINX เป็นเว็บเซิร์ฟเวอร์โอเพนซอร์สประสิทธิภาพสูง รีเวิร์สพร็อกซี โหลดบาลานเซอร์ และ HTTP แคช สร้างโดย Igor Sysoev ในปี 2004 ปัจจุบันเป็นของ F5 Networks
ฟังก์ชันหลัก
- เว็บเซิร์ฟเวอร์ — ให้บริการเนื้อหาแบบสถิต
- รีเวิร์สพร็อกซี — พร็อกซีคำขอไปยังเซิร์ฟเวอร์แบ็กเอนด์
- โหลดบาลานซิ่ง — กระจายทราฟฟิกระหว่างเซิร์ฟเวอร์
- การยุติ SSL/TLS — จัดการการเชื่อมต่อ HTTPS
- การแคช HTTP — แคชการตอบสนองของเซิร์ฟเวอร์อัพสตรีม
ข้อดี
- สถาปัตยกรรมแบบอะซิงโครนัสขับเคลื่อนด้วยเหตุการณ์
- ใช้หน่วยความจำต่ำ
- ประสิทธิภาพสูง (10K+ การเชื่อมต่อ)
- การกำหนดค่าง่าย
- สถาปัตยกรรมแบบโมดูลาร์
กรณีการใช้งานทั่วไป
- ให้บริการไฟล์สถิต (HTML, CSS, JS, รูปภาพ)
- รีเวิร์สพร็อกซีสำหรับ Node.js, Python, PHP, Java
- API Gateway
- โหลดบาลานซิ่งระหว่าง Docker containers
- SSL offloading สำหรับไมโครเซอร์วิส
การกำหนดค่าพื้นฐาน
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
}
location /static/ {
root /var/www;
expires 30d;
}
}
NGINX vs Apache
| พารามิเตอร์ | NGINX | Apache | |-------------|-------|--------| | สถาปัตยกรรม | Event-driven | Process/Thread | | ไฟล์สถิต | เร็วกว่า | ช้ากว่า | | .htaccess | ไม่ | ใช่ | | การกำหนดค่า | รวมศูนย์ | กระจาย |
โมดูลยอดนิยม
- ngx_http_gzip_module — การบีบอัดการตอบสนอง
- ngx_http_ssl_module — HTTPS
- ngx_http_proxy_module — พร็อกซี่
- ngx_http_upstream_module — โหลดบาลานซิ่ง
- ngx_http_rewrite_module — เขียน URL ใหม่