Nginx internal 指令限制訪問圖片資源文件


Nginx 的 internal 指令可以用來限制 Web 公共目錄下的圖片等資源文件被任意用戶直接訪問。一個明顯的使用場景是,對於用戶上傳的認證圖片,屬於個人隱私資源,不應該讓所有用戶都能訪問得到,通常只能由管理員審核時查看。

假定需要限制訪問的圖片的 URL 路徑是 /images/auth-pictures/,Nginx 進行如下配置:

location ^~ /images/auth-pictures/ {
  internal;
}

重啟 Nginx,直接訪問 /images/auth-pictures/ 下的圖片,會返回 404:

利用 PHP 在響應頭加上 “X-Accel-Redirect” 域使請求重定向到真實的圖片路徑上面:

1 <?php
2 // 可以先進行身份判斷有無訪問權限
3 // ...
4 $name = $_GET['name'];
5 header('Content-Type: ' . getimagesize('./images/auth-pictures/' . $name)['mime']);
6 header('X-Accel-Redirect: /images/auth-pictures/' . $name);
7 die;

此時就可以通過 PHP 程序來重定向請求訪問圖片了:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM