การทำงานของ 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