Nginx

Nginx - 僅允許通過引用 URL 訪問文件夾目錄

  • February 22, 2017

前端網路開發人員在這裡。提前抱歉。

我的公司希望將我們軟體的新版本儲存在我們的 Web 伺服器上,執行 Nginx,由WP Engine提供。

這些建構的文件路徑是company.com/downloads/file.zip. 我們希望限制對該文件夾中文件的訪問,除非它們來自位於我們客戶登錄門後面的特定引用 URL。

  • /downloads/如果使用者從允許的引薦來源中點擊指向內部任何文件的連結,則使用者將獲取文件
  • 如果使用者點擊任何其他來源的連結,則返回 404 或重定向到首頁
  • 如果為空referer或直接訪問嘗試,返回404或重定向到首頁

我找到了一個關於防止圖像熱連結的資源(我們將處理 .zip 文件),這可能對我有用,但我需要有關該語言語法的幫助。它可能有很多問題。

location ~ /downloads/$ {
valid_referers none blocked ~.allowed_domain.com;
if ($invalid_referer) {
return 404;
}
}

WP Engine 不允許我自己添加 Nginx 程式碼,所以我必須向他們發送我希望他們實現的程式碼。如果有人知道如何做到這一點並且可以幫助我,我將非常感激!

其他可能性是使用X-Accel標頭。我不知道你的案例,所以它可能不合適。

X-Accel是 nginx 特定的標頭。您可以在 PHP 腳本中發出該標頭 - 比如header("X-Accel-Redirect: /private-downloads/magic.iso") 當 nginx 辨識此標頭時,它將伺服器magic.iso位於/data/private-downloads.

因此,您的任務是準備download.php檢查授權並使用X-Accel標頭響應或重定向到登錄螢幕。

/private-downloads/在 nginx.conf 中的定義

location /private-downloads/ {
   internal;    # this
   alias /data/private-downloads;
   # this should be located outside of HTTP server root
}

有關更多詳細資訊,請查看有關 serverfault 的 x-accel 問題。1

引用自:https://serverfault.com/questions/834252