在nginx中x sendfile解決方案

2021-07-23 16:48:55 字數 2757 閱讀 1955

例如下面的**:?

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...