การตั้งค่าหน้า 404 Not Found ใน Nginx ทำได้ง่าย ๆ โดยการแก้ไขไฟล์ Configuration ของเว็บไซต์คุณ
สร้างหน้า HTML สำหรับ 404
ก่อนอื่นคุณต้องมีไฟล์หน้าตาที่ต้องการโชว์ให้ user เห็น เช่น สร้างไฟล์ไว้ที่ /var/www/html/custom_404.html
<!DOCTYPE html>
<html>
<head> <title>ไม่พบหน้านี้ </title> <style> body { text-align: center; padding: 50px; font-family: sans-serif; } </style>
</head>
<body> <h1>ขออภัย ไม่พบหน้าที่คุณต้องการ</h1> <p>ลิ้งก์อาจจะเสีย หรือหน้านี้ถูกลบไปแล้ว</p> <a href="/">กลับหน้าหลัก</a>
</body>
</html>
แก้ไข Nginx Configuration
เปิดไฟล์ Config ขึ้นมา แล้วเพิ่มคำสั่ง error_page และ location ไว้ภายใน block server { ... }
server { listen 80; server_name yourdomain.com; root /var/www/html; # ระบุว่าถ้าเจอ error 404 ให้ไปที่ไฟล์ /custom_404.html error_page 404 /custom_404.html; # ตั้งค่า location เพื่อให้แน่ใจว่าเรียกไฟล์นี้ได้ถูกต้อง location = /custom_404.html { root /var/www/html; internal; # ป้องกันไม่ให้ user เข้าถึงไฟล์นี้โดยตรงผ่าน URL } # config อื่น ๆ ของคุณ...
}
ตรวจสอบและ Restart
หลังจากแก้ไขเสร็จแล้ว ห้ามลืม ตรวจสอบความถูกต้องของ Syntax ก่อนสั่ง Run จริง
- Check Syntax
sudo nginx -t
ถ้าขึ้นเป็น
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
ข้ามไปขั้นตอนต่อไป แต่ถ้าเป็นแบบอื่น ๆ ลองดูให้ดีว่าผิดตรงไหน - Restart Nginx
sudo systemctl restart nginx
💡 ข้อควรระวัง
- คำสั่ง
internal: สำคัญมาก เพราะจะช่วยให้หน้า 404 นี้ถูกเรียกใช้โดย Nginx เท่านั้น ไม่สามารถพิมพ์ URL ตรง ๆ เข้ามาดูได้ - Full Path: ตรวจสอบให้แน่ใจว่า
rootใน Nginx ชี้ไปที่โฟลเดอร์ที่มีไฟล์ HTML ของคุณอยู่จริง ๆ
อ่านเพิ่มเติม