NGINX: 404 Not Found

Byphunsanit

NGINX: 404 Not Found

การตั้งค่าหน้า 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 จริง

  1. 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
    ข้ามไปขั้นตอนต่อไป แต่ถ้าเป็นแบบอื่น ๆ ลองดูให้ดีว่าผิดตรงไหน
  2. Restart Nginx
    sudo systemctl restart nginx

💡 ข้อควรระวัง

  • คำสั่ง internal: สำคัญมาก เพราะจะช่วยให้หน้า 404 นี้ถูกเรียกใช้โดย Nginx เท่านั้น ไม่สามารถพิมพ์ URL ตรงๆ เข้ามาดูได้
  • Full Path: ตรวจสอบให้แน่ใจว่า root ใน Nginx ชี้ไปที่โฟลเดอร์ที่มีไฟล์ HTML ของคุณอยู่จริง ๆ

อ่านเพิ่มเติม

About the author

phunsanit administrator