封鎖轉介垃圾訊息
下列範例說明如何使用自訂VCL程式碼片段設定Fastly Edge Dictionary,以封鎖雲端基礎結構網站上來自Adobe Commerce的反向連結垃圾訊息。
必要條件:
-
您的環境必須設定為使用Fastly CDN。 請參閱設定Fastly服務。
-
確保您執行的是Magento2適用的最新版Fastly CDN模組。 請參閱升級Fastly模組。
-
驗證Fastly服務的環境設定。 請參閱檢查Fastly快取。
-
您必須擁有管理員憑證才能存取測試環境和生產環境。
-
檢閱您的網站記錄檔以找出虛假的轉介URL,並建立要封鎖的網域清單。
建立反向連結封鎖清單
Edge字典會建立VCL程式碼片段處理期間VCL函式可存取的鍵值值組。 在此範例中,您會建立邊緣字典,提供要封鎖的反向連結網站清單。
-
登入管理員。
-
按一下 商店 > 設定 > 組態 > 進階 > 系統。
-
展開 完整頁面快取 > Fastly設定 > Edge字典。
-
建立字典容器:
-
按一下 新增容器。
-
在 容器 頁面上,輸入 字典名稱—
referrer_blocklist
。 -
選取 在變更後啟動 以將您的變更部署至您正在編輯的Fastly服務組態版本。
-
按一下 上傳,將字典附加至您的Fastly服務組態。
-
-
新增要封鎖的網域名稱清單至
referrer_blocklist
字典:-
按一下
referrer_blocklist
字典的[設定]圖示。 -
在新字典中新增並儲存索引鍵/值組。 在此範例中,每個 Key 是要封鎖的反向連結URL的網域名稱,值 是
true
。 -
按一下 取消 以返回系統設定頁面。
-
-
按一下 儲存設定。
-
根據頁面頂端的通知重新整理快取。
如需Edge字典的詳細資訊,請參閱Fastly檔案中的建立及使用Edge字典和自訂VCL片段。
建立自訂VCL程式碼片段以封鎖反向連結垃圾訊息
下列自訂VCL片段程式碼(JSON格式)顯示檢查及封鎖要求的邏輯。 VCL程式碼片段會將反向連結網站的主機擷取到標題中,然後將主機名稱與referrer_blocklist
字典中的URL清單比較。 如果主機名稱相符,則封鎖要求並出現403 Forbidden
錯誤。
{
"name": "block_bad_referrer",
"dynamic": "0",
"type": "recv",
"priority": "5",
"content": "set req.http.Referer-Host = regsub(req.http.Referer, \"^https?:\/\/?([^:\/s]+).*$\", \"\\1\"); if (table.lookup(referrer_blocklist, req.http.Referer-Host)) { error 403 \"Forbidden\"; }"
}
根據此範例建立程式碼片段之前,請檢閱值以判斷是否需要進行任何變更:
-
name
— VCL程式碼片段名稱。 在此範例中,我們使用block_bad_referrer
。 -
dynamic
— 值0表示一般程式碼片段,可上傳到Fastly設定的已建立版本VCL。 -
priority
— 決定VCL程式碼片段何時執行。 優先順序為5
,可在指派優先順序為50的任何預設MagentoVCL程式碼片段(magentomodule_*
)之前執行此程式碼片段。 視您希望程式碼片段執行的時間而定,將每個自訂程式碼片段的優先順序設定為高於或低於50。 優先順序較低的程式碼片段會先執行。 -
type
— 指定在VCL版本中插入程式碼片段的位置。 在此範例中,VCL片段是recv
片段。 將程式碼片段插入VCL版本時,它會新增到vcl_recv
副程式中、預設Fastly VCL程式碼的下方,以及任何物件的上方。 -
content
— 要在一行中執行的VCL程式碼片段,沒有分行符號。
檢閱並更新您環境的程式碼後,請使用下列其中一種方法,將自訂VCL程式碼片段新增至您的Fastly服務設定:
-
從Admin新增自訂VCL程式碼片段。 如果您可以存取Admin,則建議使用此方法。 (需要Fastly 1.2.58或更新版本。)
-
將JSON程式碼範例儲存至檔案(例如,
allowlist.json
)並使用Fastly API🔗上傳。 如果您無法存取Admin,請使用此方法。
新增自訂VCL片段
-
登入管理員。
-
按一下 商店 >設定> 組態 > 進階 > 系統。
-
展開 完整頁面快取 > Fastly組態 > 自訂VCL程式碼片段。
-
按一下 建立自訂程式碼片段。
-
新增VCL程式碼片段值:
-
名稱 —
block_bad_referrer
-
型別 —
recv
-
優先順序 —
5
-
VCL 程式碼片段內容 —
code language-conf set req.http.Referer-Host = regsub(req.http.Referer, "^https?://?([^:/\s]+).*$", "1"); if (table.lookup(referrer_blocklist, req.http.Referer-Host)) { error 403 "Forbidden"; }
-
-
按一下 建立。
-
頁面重新載入後,在 Fastly組態 區段中按一下 上傳VCL到Fastly。
-
上傳完成後,請根據頁面頂端的通知重新整理快取。
Fastly會在上傳過程中驗證更新的VCL版本。 如果驗證失敗,請編輯您的自訂VCL程式碼片段以修正任何問題。 然後,再次上傳VCL。
$MAGENTO_CLOUD_APP_DIR/var/vcl_snippets_custom
目錄,而不必手動上傳自訂VCL程式碼片段。 當您在Commerce Admin中按一下_將VCL上傳至Fastly_時,此目錄中的程式碼片段會自動上傳。 請參閱Fastly CDN模組中的自動自訂VCL程式碼片段部署以取得Magento2檔案。修改自訂VCL片段
-
登入管理員。
-
按一下 商店 > 設定 > 組態 > 進階 > 系統。
-
展開 完整頁面快取 > Fastly組態 > 自訂VCL程式碼片段。
-
在 動作 欄中,按一下要編輯的程式碼片段旁的設定圖示。
-
頁面重新載入後,在 Fastly組態 區段中按一下 上傳VCL到Fastly。
-
上傳完成後,請根據頁面頂端的通知重新整理快取。
刪除自訂VCL片段
-
登入管理員。
-
按一下 商店 > 設定 > 組態 > 進階 > 系統。
-
展開 完整頁面快取 > Fastly組態 > 自訂VCL程式碼片段。
-
在 動作 欄中,按一下要刪除的程式碼片段旁的垃圾桶圖示。
-
在下一個模型視窗中,按一下 DELETE 並啟動新版本。