通过 nginx 的中间主机名阻止请求

Block requests via intermediate host names at nginx

我有一个设置,用户应该将请求发送到 A.com。请求被发送到 CDN,CDN 进一步将请求发送到 A-reader.com,A-reader 将请求路由到 nginx。

我希望 A-reader 只能通过 CDN 访问,因此,目的是阻止原始请求 url 不是 A.com 的任何请求。如果任何用户在浏览器地址栏中键入 A-reader.com/<anything>,请求应在 nginx

处被阻止

这可能吗?

是 - 您可以使用 nginx http referrer 模块 - http://nginx.org/en/docs/http/ngx_http_referer_module.html

在你的情况下,因为你只想允许 A.com,配置应该是这样的:

valid_referers *.A.com;
if ($invalid_referer) {
    return 403;
}

您必须自定义有效的引荐列表以匹配您的域。


或者,您可以对 $http_referer:

进行正则表达式匹配
 if ($http_referer ~* (babes|click|diamond|forsale|girl|jewelry|love|nudit|poker|porn))
    {  return 403;   }

(来自 https://calomel.org/nginx.html via How to block referral spam using Nginx? 的 HTTP 引荐来源网址)