Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

Squid 代理伺服器圖片防盜鏈完整配置指南

編輯:關於伺服器

Squid 作為廣泛部署的快取與代理伺服器,其防盜鏈功能是網站管理員保護頻寬資源的關鍵手段。本文詳細解析如何透過 ACL(存取控制清單)與 http_access 指令,精準攔截非授權域名對圖片資源的盜鏈請求,並回傳自定義替代圖片。

核心配置邏輯

防盜鏈的核心在於三個階段的匹配:識別圖片請求、驗證 Referer 來源、執行允許或拒絕策略。以下配置片段可直接納入 squid.conf:

# 1. 定義圖片資源匹配規則(不區分大小寫)
acl pics urlpath_regex -i \.(gif|jpg|jpeg|bmp|png)$

# 2. 定義允許的域名關鍵字(請替換為實際域名)
acl domain_refer referer_regex -i yourdomain\.com

# 3. 定義非空 Referer 匹配
acl notnull_refer referer_regex .

# 4. 允許空 Referer 直接訪問圖片(如瀏覽器直接輸入 URL)
http_access allow pics !notnull_refer

# 5. 拒絕非授權域名的圖片請求
http_access deny pics !domain_refer

# 6. 盜鏈請求導向替代圖片(建議使用絕對路徑)
deny_info https://www.example.com/anti-hotlink.gif domain_refer

關鍵指令解析

  • urlpath_regex:針對請求 URL 路徑進行正則匹配,-i 參數忽略大小寫,涵蓋主流圖片格式。
  • referer_regex:檢查 HTTP Referer 標頭,domain_refer 允許指定域名(含子域名),notnull_refer 捕捉所有非空 Referer。
  • http_access 顺序:規則由上而下生效。優先放行空 Referer,再拒絕非白名單域名,符合「最小權限」原則。
  • deny_info:當觸發 deny 時,重導向至指定圖片,避免返回預設錯誤頁面,提升用戶體驗並宣示版權。

部署建議與常見坑點

  1. 域名寫法:referer_regex 支援正則,建議使用 yourdomain\.com 而非完整 URL,自動涵蓋 www.、cdn. 等子域名。
  2. HTTPS 站點:若源站為 HTTPS,Referer 可能因同源策略被瀏覽器隱藏,導致誤判為空 Referer。需結合 referer_regex 與 srcdomain_regex 輔助判斷。
  3. 效能考量:ACL 匹配在 CPU 中完成,高併發場景下建議將圖片靜態資源卸載至 CDN,降低 Squid 處理壓力。
  4. 測試驗證:使用 curl -e "https://evil.com" -I https://proxy/image.jpg 模擬盜鏈請求,確認回應為 302 重導向至替代圖片。

進階擴展:動態白名單管理

若授權域名頻繁變更,可將域名清單存放於外部檔案,配合 acl domain_refer referer_regex "/etc/squid/allowed_domains.txt" 實現熱加載,避免修改主配置後重啟服務。搭配 squid -k reconfigure 平滑生效,實現運維自動化。

掌握上述配置,即可構建輕量級、高效能的圖片防盜鏈防線,有效遏制頻寬盜用,保障業務資源安全。

Copyright © Windows教程網 All Rights Reserved