การตั้งค่าหน้า 404 Not Found ใน Nginx ทำได้ง่าย ๆ โดยการแก้ไขไฟล์ Configuration ของเว็บไซต์คุณ ( ปกติจะอยู่ที่ /etc/nginx/sites-available/default หรือไฟล์ที่คุณสร้างขึ้นเอง )
สร้างหน้า HTML สำหรับ 404
ก่อนอื่นคุณต้องมีไฟล์หน้าตาที่ต้องการโชว์ให้ user เห็น เช่น สร้างไฟล์ไว้ที่ /var/www/html/custom_404.html
<!DOCTYPE html>
<html>
<head>
<title>ไม่พบหน้านี้ ( 404 )</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 ของคุณอยู่จริง ๆ
อ่านเพิ่มเติม
About the author