阻止反向链接垃圾邮件
以下示例说明如何使用自定义VCL代码片段配置Fastly Edge词典,以阻止云基础架构网站上来自Adobe Commerce的反向垃圾邮件。
先决条件:
-
您的环境必须配置为使用Fastly CDN。 请参阅配置Fastly服务。
-
确保您运行的是Magento2的最新版Fastly CDN模块。 请参阅升级Fastly模块。
-
验证Fastly服务的环境配置。 请参阅检查Fastly缓存。
-
您必须拥有管理员凭据才能访问暂存环境和生产环境。
-
审查网站日志中的虚假引用URL,并列出要阻止的域。
创建反向链接阻止列表
Edge词典用于创建在VCL代码片段处理期间可供VCL函数访问的键值对。 在本例中,您会创建一个Edge词典,其中提供要阻止的反向链接网站列表。
-
登录管理员。
-
单击 存储 > 设置 > 配置 > 高级 > 系统。
-
展开 全页缓存 > 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
,以便在任何默认MagentoVCL代码片段(magentomodule_*
)被指定优先顺序为50之前运行此代码片段。 根据您希望代码片段运行的时间,将每个自定义代码片段的优先级设置为高于或低于50。 优先级较低的代码片段首先运行。 -
type
— 指定在VCL版本中插入代码片段的位置。 在此示例中,VCL代码片段是recv
代码片段。 将代码片段插入VCL版本后,它会添加到vcl_recv
子例程中,位于默认Fastly VCL代码下方,以及任何对象上方。 -
content
— 要在一行中运行的VCL代码片段,不带换行符。
查看并更新环境的代码后,使用以下任一方法将自定义VCL代码段添加到Fastly服务配置中:
-
从Admin添加自定义VCL代码片段。 如果您可以访问管理员,则建议使用此方法。 (需要Fastly版本1.2.58或更高版本。)
-
将JSON代码示例保存到文件(例如,
allowlist.json
)中,然后使用Fastly API上载它。 如果您无法访问管理员,请使用此方法。
添加自定义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_时,此目录中的代码片段会自动上传。 有关Magento2文档,请参阅Fastly CDN模块中的自动自定义VCL代码片段部署。修改自定义VCL代码片段
-
登录管理员。
-
单击 存储 > 设置 > 配置 > 高级 > 系统。
-
展开 全页缓存 > Fastly配置 > 自定义VCL代码片段。
-
在 操作 列中,单击要编辑的代码片段旁边的设置图标。
-
重新加载页面后,在 Fastly配置 部分中单击 将VCL上传到Fastly。
-
上载完成后,根据页面顶部的通知刷新缓存。
删除自定义VCL代码片段
-
登录管理员。
-
单击 存储 > 设置 > 配置 > 高级 > 系统。
-
展开 全页缓存 > Fastly配置 > 自定义VCL代码片段。
-
在 操作 列中,单击要删除的代码片段旁边的垃圾桶图标。
-
在下一个模式窗口中,单击 DELETE 并激活新版本。