如果使用 cloudflare,Nginx 重定向不起作用

如果使用 cloudflare,Nginx 重定向不起作用

如果用户直接通过浏览器访问图片,我会使用 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 请求的处理方式,并需要细心工作才能确保一切顺利运行。

相关内容