2

在这里寻求 Nginx 专家的帮助。

我想阻止人们直接从我的网站访问 CSS 或 JS。有点像这样:http ://assets.behance.net/

我从 ServerFault 得到这个参考: https ://serverfault.com/a/332493/117595

location ~* (\.jpg|\.png|\.gif|\.jpeg|\.png)$ {
 valid_referers none blocked www.example.com example.com;
 if ($invalid_referer) {
    return 403;
 }
}

但有几个问题:

  1. 在 中valid_referers,我应该如何包含我的 vhosts 目录中的所有域,该目录包含此服务器上我所有域的服务器块。(这是一个具有许多 Cpanel 域的专用 WHM 服务器。)我希望这个允许域列表以某种方式自动化,以防我们将来添加更多域。

  2. 更重要的是,我怎样才能在主“http”块中制作它,而不是逐个服务器(即每个域的虚拟主机!)?

  3. “IF”条件不会让 Nginx 服务器变慢吗?到目前为止,我们已经远离所有 IF 块,因为我记得阅读这对性能有很大的不利影响。

谢谢!

4

1 回答 1

0

谢谢@dmitry-paskal。我将继续跳过“无”。但问题是 403 消息来自 nginx 默认值。我的“服务器”块中有这个:

error_page 404 /404.html;
location = /404.html {
  root   /etc/nginx/html;
  internal;
}
error_page 403 /403.html;
  location = /403.html {
  root   /etc/nginx/html;
  allow all;
}
error_page 500 502 503 504  /500.html;  
  location = /500.html {  
  root  /etc/nginx/html;  
}  

目录 /etc/nginx/html 是 chmod 777。

我发现的文档和所有谷歌搜索结果表明上述代码应该可以工作。我错过了什么,如何显示我自己的 403 页面?

于 2012-05-17T01:57:10.993 回答