- 1 1. บทนำ
- 2 2. ขั้นตอนการติดตั้ง Nginx บน Ubuntu
- 3 3. การตั้งค่า Nginx พื้นฐานบน Ubuntu
- 4 4. วิธีการเริ่มต้นและการจัดการ Nginx
- 5 5. การตั้งค่าไฟร์วอลล์ Nginx และการเสริมความปลอดภัย
- 6 6. การปรับแต่งประสิทธิภาพและการแก้ไขปัญหาของ Nginx
- 7 7. สรุปและขั้นตอนต่อไป
1. บทนำ
หลายคนต้องการใช้ Nginx บน Ubuntu แต่สำหรับผู้เริ่มต้น อาจไม่รู้ว่าจะเริ่มต้นจากตรงไหน บทความนี้จะอธิบายขั้นตอนการติดตั้ง การตั้งค่า และการจัดการ Nginx บน Ubuntu อย่างละเอียด เพื่อให้ผู้เริ่มต้นสามารถเข้าใจได้ง่าย
Nginx คืออะไร?
Nginx (อ่านว่า “เอ็นจิ้นเอ็กซ์”) เป็นที่รู้จักในฐานะ HTTP Server และ Reverse Proxy Server ประสิทธิภาพสูง ด้วยความเบาและความยืดหยุ่น ทำให้ถูกนำไปใช้ในเว็บเซิร์ฟเวอร์และแอปพลิเคชันทั่วโลก โดยเฉพาะอย่างยิ่ง โดดเด่นด้วยโครงสร้างที่สามารถรองรับทราฟฟิกสูงได้ดี
ข้อดีของการใช้ Nginx บน Ubuntu
Ubuntu เป็น Linux Distribution ยอดนิยม และเข้ากันได้ดีกับ Nginx ด้วยระบบจัดการแพ็กเกจ (APT) ทำให้การติดตั้งและอัปเดตเป็นเรื่องง่าย รวมถึงคาดหวังได้ถึงความเสถียรและความปลอดภัย
เมื่ออ่านบทความนี้ คุณจะเข้าใจเนื้อหาต่อไปนี้:
- วิธีการติดตั้ง Nginx บน Ubuntu
- ขั้นตอนการตั้งค่าและการจัดการพื้นฐาน
- การปรับแต่งประสิทธิภาพและการแก้ไขปัญหา
มาเริ่มต้นการทำงานจริงกันเลย
2. ขั้นตอนการติดตั้ง Nginx บน Ubuntu
เพื่อให้ Nginx ทำงานบน Ubuntu คุณต้องติดตั้งด้วยวิธีที่ถูกต้อง ก่อนอื่น เราจะอธิบายขั้นตอนการติดตั้งอย่างง่ายดาย
การตรวจสอบแพ็กเกจที่จำเป็น
ก่อนเริ่มต้นการติดตั้ง ให้แน่ใจว่าระบบของคุณเป็นเวอร์ชันล่าสุด เรียกใช้คำสั่งต่อไปนี้:
sudo apt update
sudo apt upgrade
การติดตั้ง Nginx
ในการติดตั้ง Nginx ให้ป้อนคำสั่งต่อไปนี้:
sudo apt install nginx
คำสั่งนี้จะดาวน์โหลดและติดตั้ง Nginx จาก Ubuntu APT Repository โดยอัตโนมัติ
การยืนยันการติดตั้ง
ในการตรวจสอบว่าการติดตั้งเสร็จสมบูรณ์อย่างถูกต้องหรือไม่ ให้ตรวจสอบสถานะของ Nginx ด้วยคำสั่งต่อไปนี้:
sudo systemctl status nginx
หากแสดง “active (running)” ในเอาต์พุต แสดงว่าการติดตั้งสำเร็จ
การตั้งค่าไฟร์วอลล์
Ubuntu มาพร้อมกับ UFW (Uncomplicated Firewall) ซึ่งสามารถใช้เพื่ออนุญาตการสื่อสารของ Nginx ได้
sudo ufw allow 'Nginx Full'
sudo ufw enable
เท่านี้ Nginx ก็พร้อมทำงานบนพอร์ต 80 (HTTP) และ 443 (HTTPS) แล้ว

3. การตั้งค่า Nginx พื้นฐานบน Ubuntu
การติดตั้ง Nginx เพียงอย่างเดียวยังไม่เพียงพอ ต่อไปเราจะดำเนินการตั้งค่าพื้นฐานเพื่อให้ Nginx สามารถใช้งานได้อย่างมีประสิทธิภาพ
ตำแหน่งไฟล์การตั้งค่าและโครงสร้างพื้นฐาน
ไฟล์การตั้งค่าหลักของ Nginx อยู่ในตำแหน่งต่อไปนี้:
- ไฟล์การตั้งค่าหลัก:
/etc/nginx/nginx.conf
- ไฟล์การตั้งค่าต่อเว็บไซต์: ภายในไดเรกทอรี
/etc/nginx/sites-available/
โดยพื้นฐานแล้ว จะสร้างไฟล์การตั้งค่า Virtual Host ในไดเรกทอรี sites-available
และสร้าง Symbolic Link ไปยังไดเรกทอรี sites-enabled
การตั้งค่า Virtual Host
การตั้งค่า Virtual Host ช่วยให้คุณสามารถจัดการโดเมนหรือโปรเจกต์หลายรายการบนเซิร์ฟเวอร์เดียว ในตัวอย่างต่อไปนี้ เราจะตั้งค่า example.com
sudo nano /etc/nginx/sites-available/example.com
ป้อนเนื้อหาต่อไปนี้:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
หลังจากบันทึก ให้เปิดใช้งานการตั้งค่าด้วยคำสั่งต่อไปนี้:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
การตั้งค่า SSL/TLS
ในการสื่อสารที่ปลอดภัย ให้ตั้งค่าใบรับรอง SSL/TLS คุณสามารถรับใบรับรองฟรีโดยใช้ Let’s Encrypt
ขั้นแรก ติดตั้ง certbot
:
sudo apt install certbot python3-certbot-nginx
ถัดไป เรียกใช้คำสั่งต่อไปนี้เพื่อรับใบรับรอง SSL และตั้งค่าอัตโนมัติ:
sudo certbot --nginx -d example.com -d www.example.com
ตั้งค่าการต่ออายุอัตโนมัติเพื่อให้ใบรับรองไม่หมดอายุ
4. วิธีการเริ่มต้นและการจัดการ Nginx
หลังจากติดตั้งและตั้งค่าพื้นฐานของ Nginx แล้ว คุณจำเป็นต้องเรียนรู้วิธีการจัดการ เช่น การเริ่มต้น การหยุด และการโหลดซ้ำเมื่อมีการเปลี่ยนแปลงการตั้งค่า ในส่วนนี้จะอธิบายคำสั่งพื้นฐานที่จำเป็นสำหรับการจัดการ Nginx และวิธีการจัดการเมื่อเกิดปัญหา
คำสั่งพื้นฐานของ Nginx
บน Ubuntu คุณสามารถจัดการสถานะของ Nginx ได้โดยใช้คำสั่ง systemctl
ด้านล่างคือคำสั่งที่เกี่ยวข้องกับการดำเนินการหลัก:
- การเริ่มต้น 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 อัตโนมัติ
การตั้งค่า Nginx ให้เริ่มต้นอัตโนมัติ จะช่วยให้ไม่ต้องเริ่มต้นด้วยตนเองหลังจากระบบรีสตาร์ท
- การเปิดใช้งานการเริ่มต้นอัตโนมัติ
sudo systemctl enable nginx
- การปิดใช้งานการเริ่มต้นอัตโนมัติ
หากจำเป็นต้องปิดใช้งาน:
sudo systemctl disable nginx
การตรวจสอบล็อกและการแก้ไขปัญหา
หาก Nginx ทำงานไม่เป็นไปตามที่คาดไว้ ให้ตรวจสอบล็อกเพื่อหาสาเหตุ
- การตรวจสอบล็อกข้อผิดพลาด
ล็อกข้อผิดพลาดจะถูกบันทึกไว้ที่:
sudo tail -f /var/log/nginx/error.log
- การตรวจสอบล็อกการเข้าถึง
สามารถตรวจสอบเนื้อหาคำขอของไคลเอนต์ได้:
sudo tail -f /var/log/nginx/access.log
ปัญหาทั่วไปและวิธีการแก้ไข
- Nginx ไม่เริ่มต้น
- สาเหตุ: อาจมีข้อผิดพลาดในไฟล์การตั้งค่า
- วิธีการแก้ไข:
bash sudo nginx -t
ใช้คำสั่งนี้เพื่อตรวจสอบข้อผิดพลาดในไฟล์การตั้งค่าและแก้ไขปัญหา
- การเปลี่ยนแปลงไม่แสดงผล
- สาเหตุ: ไม่ได้ทำการโหลดซ้ำหรือรีสตาร์ท
- วิธีการแก้ไข:
หลังจากเปลี่ยนแปลงการตั้งค่า ให้รันsudo systemctl reload nginx
- พอร์ตไม่ได้เปิด
- สาเหตุ: การตั้งค่าไฟร์วอลล์
- วิธีการแก้ไข:
bash sudo ufw allow 'Nginx Full'
การปฏิบัติตามขั้นตอนเหล่านี้จะช่วยให้คุณสามารถจัดการ Nginx พื้นฐานได้อย่างมั่นใจ

5. การตั้งค่าไฟร์วอลล์ Nginx และการเสริมความปลอดภัย
ความปลอดภัยเป็นสิ่งสำคัญอย่างยิ่งในการใช้งาน Nginx ในส่วนนี้จะอธิบายการตั้งค่าพอร์ตโดยใช้ไฟร์วอลล์ของ Ubuntu (UFW) และวิธีเพิ่มความปลอดภัยของ Nginx
การเปิดพอร์ตด้วย UFW
UFW (Uncomplicated Firewall) เป็นเครื่องมือไฟร์วอลล์ที่ติดตั้งมาพร้อมกับ Ubuntu โดยมาตรฐาน ในการให้ Nginx ทำงานได้อย่างถูกต้อง จำเป็นต้องเปิดพอร์ต 80 (HTTP) และ 443 (HTTPS)
- ตรวจสอบสถานะ UFW ปัจจุบัน
sudo ufw status
- ใช้กฎสำหรับ Nginx
เปิดพอร์ตที่จำเป็นด้วยคำสั่งต่อไปนี้:
sudo ufw allow 'Nginx Full'
- เปิดใช้งาน UFW
หากไฟร์วอลล์ปิดอยู่ ให้เปิดใช้งาน:
sudo ufw enable
การตั้งค่าเพิ่มเติมเพื่อเสริมความปลอดภัย
- การปิดใช้งาน HTTP Method ที่ไม่จำเป็น
เพื่อเพิ่มความปลอดภัยของเซิร์ฟเวอร์ ให้ปิดใช้งาน HTTP Method ที่ไม่จำเป็น เพิ่มการตั้งค่าต่อไปนี้ในไฟล์การตั้งค่า Nginx:
if ($request_method !~ ^(GET|POST|HEAD)$) {
return 444;
}
- การปิดใช้งาน Directory Listing
เพื่อป้องกันไม่ให้เนื้อหาของไดเรกทอรีถูกเปิดเผย ให้เพิ่มสิ่งต่อไปนี้ในไฟล์การตั้งค่า:
autoindex off;
- การเสริมความแข็งแกร่งของ SSL/TLS
เพื่อใช้การเข้ารหัสที่แข็งแกร่ง ให้เพิ่มสิ่งต่อไปนี้ในการตั้งค่า SSL:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!MD5;
6. การปรับแต่งประสิทธิภาพและการแก้ไขปัญหาของ Nginx
Nginx ถูกใช้งานอย่างแพร่หลายในฐานะเว็บเซิร์ฟเวอร์ประสิทธิภาพสูง แต่ด้วยการปรับแต่งที่เหมาะสม คุณสามารถดึงประสิทธิภาพออกมาได้มากยิ่งขึ้น ในส่วนนี้จะอธิบายวิธีการปรับปรุงประสิทธิภาพของ Nginx และวิธีแก้ไขปัญหาทั่วไป
การปรับแต่งประสิทธิภาพ
1. การตั้งค่า Worker Processes
Nginx ใช้การออกแบบ Multi-Process และคุณสามารถปรับปรุงประสิทธิภาพได้โดยการตั้งค่าจำนวน Worker Processes ที่เหมาะสม
แก้ไขไฟล์การตั้งค่า /etc/nginx/nginx.conf
:
worker_processes auto;
การระบุ auto
จะตั้งค่าจำนวน Process ที่เหมาะสมโดยอัตโนมัติตามจำนวน Core CPU ของเซิร์ฟเวอร์
2. การเพิ่มจำนวนการเชื่อมต่อต่อ Worker Process
โดยค่าเริ่มต้น จำนวนการเชื่อมต่อต่อหนึ่ง Worker Process จะถูกจำกัด การเพิ่มค่านี้จะช่วยเพิ่มความสามารถในการประมวลผลภายใต้โหลดสูง
ตรวจสอบหรือเพิ่มบรรทัดต่อไปนี้ในไฟล์การตั้งค่า:
worker_connections 1024;
3. การเปิดใช้งาน HTTP/2
การเปิดใช้งาน HTTP/2 จะช่วยเพิ่มประสิทธิภาพการสื่อสารกับเบราว์เซอร์ และเพิ่มความเร็วในการโหลดเว็บไซต์
แก้ไขไฟล์ /etc/nginx/sites-available/example.com
และเปลี่ยน listen
directive ดังนี้:
listen 443 ssl http2;
จากนั้น โหลด Nginx ซ้ำ:
sudo systemctl reload nginx
4. การตั้งค่าการบีบอัดเนื้อหา
การบีบอัดไฟล์ก่อนส่งจะช่วยลดปริมาณการรับส่งข้อมูล และเพิ่มความเร็วในการโหลดหน้าเว็บ
เพิ่มหรือเปิดใช้งานสิ่งต่อไปนี้ในไฟล์การตั้งค่า:
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
5. การตั้งค่าแคช
การตั้งค่าแคชสำหรับไฟล์สแตติกจะช่วยลดจำนวนคำขอสำหรับทรัพยากรเดียวกัน
เพิ่มสิ่งต่อไปนี้ในบล็อกเซิร์ฟเวอร์:
location ~* .(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg)$ {
expires 30d;
access_log off;
}
การแก้ไขปัญหาทั่วไป
1. การประมวลผลคำขอภายใต้โหลดสูงช้า
- สาเหตุ
มักเกิดจากการตั้งค่า Worker Processes หรือจำนวนการเชื่อมต่อที่ไม่เหมาะสม - วิธีการแก้ไข
- ปรับ Worker Processes และ Worker Connections
- พิจารณาการนำ Load Balancer มาใช้หากจำเป็น
2. แสดงข้อผิดพลาด 403 Forbidden
- สาเหตุ
- พาธของ
root
directive ในไฟล์การตั้งค่า Nginx ไม่ถูกต้อง - สิทธิ์ของไดเรกทอรีหรือไฟล์ไม่เหมาะสม
- วิธีการแก้ไข
- ตรวจสอบ
root
directive ในไฟล์การตั้งค่าและระบุพาธที่ถูกต้อง - แก้ไขสิทธิ์ด้วยคำสั่งต่อไปนี้:
bash sudo chmod -R 755 /var/www/example.com/html sudo chown -R www-data:www-data /var/www/example.com/html
3. เซิร์ฟเวอร์หมดเวลา (Timeout)
- สาเหตุ
- ใช้เวลานานเกินไปในการประมวลผลคำขอของไคลเอนต์
- วิธีการแก้ไข
ปรับเวลา Timeout เพิ่มหรือเปลี่ยนแปลงสิ่งต่อไปนี้ในไฟล์การตั้งค่า:
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_send_timeout 300;
4. เกิดข้อผิดพลาดเมื่อรีสตาร์ท Nginx
- สาเหตุ
ไฟล์การตั้งค่ามีข้อผิดพลาด - วิธีการแก้ไข
ก่อนบันทึกการตั้งค่า ให้ตรวจสอบไวยากรณ์ด้วยคำสั่งต่อไปนี้:
sudo nginx -t
การปฏิบัติตามขั้นตอนเหล่านี้จะช่วยให้คุณสามารถดึงประสิทธิภาพสูงสุดของ Nginx และจัดการกับปัญหาทั่วไปได้

7. สรุปและขั้นตอนต่อไป
ในบทความนี้ เราได้อธิบายวิธีการติดตั้ง การตั้งค่า และการจัดการ Nginx บน Ubuntu อย่างละเอียด มาทบทวนเนื้อหาที่ได้เรียนรู้ในแต่ละส่วน และให้คำแนะนำสำหรับขั้นตอนต่อไปกัน
ภาพรวมบทความ
1. ขั้นตอนการติดตั้ง Nginx บน Ubuntu
- เราได้เรียนรู้วิธีการเตรียมแพ็กเกจที่จำเป็นและวิธีการติดตั้ง Nginx โดยใช้ APT
- ตั้งค่าไฟร์วอลล์ (UFW) เพื่ออนุญาตการสื่อสารของ Nginx
2. การตั้งค่าพื้นฐาน
- เข้าใจตำแหน่งและโครงสร้างของไฟล์การตั้งค่า และเรียนรู้ขั้นตอนการตั้งค่า Virtual Host และ SSL/TLS
- ได้รับทักษะการตั้งค่าที่เจาะจงผ่านตัวอย่างโค้ดจริง
3. วิธีการเริ่มต้นและการจัดการ
- เข้าใจการทำงานพื้นฐาน เช่น การเริ่มต้น การหยุด การรีสตาร์ท และการโหลดซ้ำ
- เรียนรู้วิธีการตรวจสอบล็อกที่เป็นประโยชน์ในการแก้ไขปัญหา
4. การตั้งค่าไฟร์วอลล์และการเสริมความปลอดภัย
- ได้ฝึกการเปิดพอร์ตโดยใช้ UFW และการปิดใช้งาน HTTP Method ที่ไม่จำเป็น รวมถึงมาตรการเสริมความปลอดภัยอื่นๆ
5. การปรับแต่งประสิทธิภาพและการแก้ไขปัญหา
- อธิบายเทคนิคการปรับแต่งที่เฉพาะเจาะจง เช่น การปรับ Worker Processes การเปิดใช้งาน HTTP/2 และการตั้งค่าแคช
- เรียนรู้วิธีการแก้ไขปัญหาทั่วไปเพื่อการทำงานที่เสถียรยิ่งขึ้น
ขั้นตอนต่อไป
เมื่อคุณได้เรียนรู้ขั้นตอนการติดตั้งและการตั้งค่าพื้นฐานที่นำเสนอในบทความนี้ คุณควรจะมีพื้นฐานในการใช้งาน Nginx บน Ubuntu แล้ว เพื่อพัฒนาทักษะเพิ่มเติม ลองพิจารณาขั้นตอนต่อไปนี้:
- การเรียนรู้การตั้งค่า Nginx ขั้นสูง
- เรียนรู้การตั้งค่า Load Balancing และ Reverse Proxy อย่างละเอียด เพื่อเป้าหมายการใช้งานที่ซับซ้อนยิ่งขึ้น
- ลองท้าทายกับการใช้งานใหม่ๆ โดยการใช้โมดูล (เช่น Nginx RTMP module)
- การเสริมความปลอดภัยเพิ่มเติม
- พิจารณาการติดตั้ง Web Application Firewall (WAF) หรือการใช้โมดูล Nginx ที่เกี่ยวข้องกับความปลอดภัย
- การนำระบบอัตโนมัติมาใช้
- เรียนรู้วิธีการนำ Ansible หรือ Docker มาใช้เพื่อทำให้การ Deploy และการจัดการ Nginx เป็นไปโดยอัตโนมัติ ซึ่งจะช่วยเพิ่มประสิทธิภาพการทำงาน
- การใช้เครื่องมือตรวจสอบและปรับแต่ง
- ติดตั้งเครื่องมือตรวจสอบ เช่น Prometheus หรือ Grafana เพื่อแสดงประสิทธิภาพของ Nginx แบบเรียลไทม์
สุดท้าย
Nginx เป็นเว็บเซิร์ฟเวอร์ที่รวดเร็วและยืดหยุ่นสูง และสามารถรองรับการใช้งานได้หลากหลายรูปแบบเมื่อใช้งานอย่างถูกต้อง ขอให้คุณนำความรู้ที่ได้จากบทความนี้ไปประยุกต์ใช้ในโปรเจกต์จริงของคุณ
ในอนาคต หากมีข้อสงสัยเพิ่มเติมหรือความต้องการใหม่ๆ แนะนำให้ศึกษาจากเอกสารทางการของ Nginx หรือแหล่งข้อมูลจากชุมชน หวังว่าบทความนี้จะเป็นประโยชน์ต่อการจัดการเว็บเซิร์ฟเวอร์ของคุณ!