从 nginx 重写规则中排除 google doc 嵌入 iframe?

从 nginx 重写规则中排除 google doc 嵌入 iframe?

我希望有人能帮助我,因为我对服务器相关内容的了解非常有限。

我有一个 WordPress 网站,我想将/wp-content/uploads/目录访问权限限制为仅限登录用户。为此,我在 Nginx 服务器上使用了以下链接中指定的解决方法:

https://wordpress.stackexchange.com/questions/37144/how-to-protect-uploads-if-user-is-not-logged-in

这个解决方案确实有效。但是,还有一个问题。

我在某些页面上通过 Google 文档嵌入嵌入了一些 PDF。Google 文档嵌入用于<iframe>按如下方式加载 PDF:

<iframe src="//docs.google.com/viewer?url=https://link-to-file.pdf&amp;hl=en_US&amp;embedded=true" class="" style="width:100%; height:500px; border: none;" scrolling="no"></iframe>

我的Nginx规则如下:

location ~* /(?:uploads)/* {
   rewrite /wp-content/uploads/(.*)$ /dl-file.php?file=$1;
}

我如何才能将上述 iframe 或//docs.google.comURL 排除在这条规则之外?

任何帮助都将非常感激。

答案1

您可以使用引荐来源(http://nginx.org/en/docs/http/ngx_http_referer_module.html#valid_referers

valid_referers none blocked server_names docs.google.com;

那么您就可以在位置块中使用 $invalid_referer 变量。

if ($invalid_referer) {
    rewrite /wp-content/uploads/(.*)$ /dl-file.php?file=$1;
}

相关内容