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
-i 參數忽略大小寫,涵蓋主流圖片格式。domain_refer 允許指定域名(含子域名),notnull_refer 捕捉所有非空 Referer。deny 時,重導向至指定圖片,避免返回預設錯誤頁面,提升用戶體驗並宣示版權。referer_regex 支援正則,建議使用 yourdomain\.com 而非完整 URL,自動涵蓋 www.、cdn. 等子域名。referer_regex 與 srcdomain_regex 輔助判斷。curl -e "https://evil.com" -I https://proxy/image.jpg 模擬盜鏈請求,確認回應為 302 重導向至替代圖片。若授權域名頻繁變更,可將域名清單存放於外部檔案,配合 acl domain_refer referer_regex "/etc/squid/allowed_domains.txt" 實現熱加載,避免修改主配置後重啟服務。搭配 squid -k reconfigure 平滑生效,實現運維自動化。
掌握上述配置,即可構建輕量級、高效能的圖片防盜鏈防線,有效遏制頻寬盜用,保障業務資源安全。
iSCSI 技術深度解析:原理、標準演進、與 FC SAN 的生死較量
Windows Server 2003 預設授權模式限制並發連線,導致共享資源無法同時存取
CentOS 7/8 服務管理速查表:Apache、MySQL、Nginx 啟停重啟與狀態檢查標準姿勢
Red Hat AS 5 Update 4 x64 僅識別 32GB 記憶體?Xen 核心限制揭祕與解決方案
IIS 7/8/10 站點報錯「An error occurred on the server」一鍵開啟詳細錯誤訊息
LSI 8708E SAS RAID 卡 MSM 管理軟體刪除陣列操作圖解