我希望有人能帮助我,因为我对服务器相关内容的了解非常有限。
我有一个 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&hl=en_US&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.com
URL 排除在这条规则之外?
任何帮助都将非常感激。
答案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;
}