การใช้งาน X-Sendfile บน Nginx เขียนเมื่อ 2010.09.22 โดย

X-Sendfile เป็น header เพื่อแจ้งไปยัง Web Server ให้ทำการส่ง Static file ไปยัง client ไม่ใช่เพียงแค่ Lighttpd หรือ Apache เท่านั้นที่รองรับ X-Sendfile แต่ใน Nginx ก็ยังมีคุณสมบัตินี้เช่นกัน แต่ใช้ชื่อว่า X-Accel-Redirect

การทำงานของ X-Accel-Redirect ของ Nginx มีการพัฒนาขึ้นมาในแบบของตัวเอง การทำงานก็จะเหมือน X-Sendfile คือเมื่อมีการส่ง header นี้มาจาก application จะทำการส่งข้อมูลจากไฟล์แทนที่เนื้อหาที่ถูกส่งมาและนำส่งไปยัง client แทน

ก่อนอื่นในส่วนของ server เราต้องสร้าง path ของเราก่อน
location /files {
internal;
root /var/www;
}

โดยเมื่อทำการส่งไฟล์จะส่งข้อมูลจากไฟล์ที่อยู่ใน /var/www/files/
หรือเราสามารถใช้งาน alias directive ก็ได้เช่น

location /files {
internal;
alias /var/www;
}

หมายถึงเมื่อมีการส่งข้อมูลจากไฟล์ที่อยู่ใน /var/www

ส่วนการสั่งงานให้ส่งไฟล์นั้นในส่วน application ของเราก็เพียงส่ง header แจ้งมาเท่านั้นเช่น
<?php
@header('Content-Type: application/octet-stream; charset=utf-8');
@header('Content-Disposition: attachment; filename="aliasname.bin"');
@header('X-Accel-Redirect: /files/file1.bin');
?>

เมื่อเราส่ง header X-Accel-Redirect ตาม path ที่ได้สร้างไว้จะทำการส่งไฟล์จาก /var/www/file1.bin ไปยัง client



คำเตือนคำเตือน เนื้อหาต่างๆ ในบทความ รวมถึงรูปภาพทั้งหมดในบทความนี้ เป็นความเห็นส่วนตัวของผู้เขียนแต่ละคน ซึ่งแต่ละคนได้ทำการลงทะเบียน และเขียนบทความลงใน Modoeye Articles นี้โดยไม่มีค่าธรรมเนียมใดๆ บทความเหล่านี้เป้าหมายเพื่อการศึกษา และความบันเทิงเท่านั้น การนำส่วนหนึ่งส่วนใดของบทความไปใช้งาน ควรทำการอ้างอิงถึงผู้เขียนและแหล่งที่มาด้วย