如果用户直接通过浏览器访问图片,我会使用 nginx 进行重定向。问题是,当您使用 cloudflare 时,它不起作用。
nginx 配置
location ~ "^/c/600x1200_90_webp/img-master/img/\d+/\d+/\d+/\d+/\d+/\d+/((?<filenum>\d+)[^/]+\.(jpg|png|webp))$" {
proxy_pass http://xxx.xxx.xxx.xxx:8081;
valid_referers server_names example.com;
if ($invalid_referer = "1") {
add_header Cache-Control "no-cache";
return 301 https://example.com/detail?id=$filenum;
}
}
有没有办法在不禁用 cloudflare 的情况下解决这个问题?我希望仍然能够缓存和重定向
答案1
Cloudflare 缓存来自您的 nginx 的响应,并将其直接提供给访问者,而无需访问您的 nginx。
这意味着您的 nginx 配置不能用于根据 referer 标头有选择地提供不同的内容。
Cloudflare 有自己的热链接保护功能,它可能会满足您的需要。
如果这还不够,那么您可以使用 Cloudflare Workers 来实施您想要的策略。但是,这需要了解 HTTP 请求的处理方式,并需要细心工作才能确保一切顺利运行。