例如下面的**:?
12
3
4
5
6
7
8
9
10
11
12
13
<?php
// 使用者身份認證,若驗證失敗跳轉
authenticate();
$file
= determine_file();
// 讀取檔案內容
$content
=
file_get_contents
(
$file
);
// 傳送合適的 http 頭
header(
);
header(
'content-disposition: attachment; filename="'
.
basename
(
$file
) .
'"'
);
header(
"content-length: "
.
filesize
(
$file
));
echo
$content
;
// 或者 readfile($file);
?>
一、這樣做有什麼問題?
二、什麼是 x-sendfile?
x-sendfile 通過乙個特定的 http header 來實現:在 x-sendfile 頭中指定乙個檔案的位址來通告前端 web 伺服器。當 web 伺服器檢測到後端傳送的這個 header 後,它將忽略後端的其他輸出,而使用自身的元件(包括 快取頭 和 斷點重連 等優化)機制將檔案傳送給使用者。
不同的 web 伺服器實現了不同的 http 頭
sendfile 頭
使用的 web 器
三、怎樣使用?
apache 請參考mod_xsendfile模組。下面我介紹 nginx 的用法。
nginx 預設支援該特性,不需要載入額外的模組。只是實現有些不同,需要傳送的 http 頭為 x-accel-redirect。另外,需要在配置檔案中做以下設定?
12
3
4
location /protected/
於是 php 傳送 x-accel-redirect 給 nginx:?
12
3
4
5
6
7
]<?php
$filepath
=
'/protected/iso.img'
;
header(
);
header(
'content-disposition: attachment; filename="'
.
basename
(
$file
) .
'"'
);
//讓xsendfile傳送檔案
header(
'x-accel-redirect: '
.
$filepath
);
?>
? 12
3
4
location /protected/
在Nginx中配置限流
nginx流量限制的工作原理 nginx限流的基本配置 處理突發情況 無延遲排隊 流量限制 rate limiting 是nginx最有用的功能之一,卻經常被錯誤理解和錯誤配置。它允許我們限制使用者在給定時間內可以發出的http請求數量。例如請求 首頁的get請求,表單登入的post請求等。速率限制...
在Linux系統中安裝nginx
openssl 是乙個安全套接字層密碼庫,囊括主要的密碼演算法 常用的金鑰和證書封裝管理功能及ssl協議,並提供豐富的應用程式供測試或其它目的使用。由於nginx可能需要支援https協議 在ssl協議上傳輸的http 因此以防將來用到,這裡需要安裝一下。通過ftp上傳伺服器,然後解壓 配置 安裝 ...
Nginx在Centos中的使用
nginx在centos中的使用 安裝過程可以見部落格 這裡主要說一下配置過程 我想要實現的是外網主機訪問伺服器,然後伺服器將訪問請求重定向到伺服器中的虛擬機器裡面去。比如說我的伺服器公網ip是211.69.197.64,繫結的網域名稱是www.zhangyaya.xyz。而我的專案部署在伺服器的u...