nginx 拒绝访问 JS 和 CSS

nginx deny access to JS and CSS

我在 nginx 后面使用 node.js 设置了一个网页。一切正常,但我想阻止直接 public 访问我的 css 和 js 文件

在我的 nginx 配置中,我有这样的东西:

location /style/ {
        deny all;
    }

location /js/ {
        deny all;
    }

它确实阻止了访问 - 当我在我的网页上查看源代码并尝试直接导航到 css 或链接的 js 文件时,我收到 403 错误。但是,这也阻止了 node/nginx 能够正确使用这些文件 style/add 页面

的功能

防止人们直接访问这些文件,同时仍然能够使用它们来显示页面本身的正确方法是什么?

没有办法。

要么浏览器可以访问该文件并在页面中使用它,要么根本无法访问该文件。

您可以 尝试 使用 referer 请求 header,但您会得到漏报,并且下载该页面的人将可以访问JS 无论如何(从缓存或从浏览器的开发人员工具中的脚本选项卡)。

您应该使用标准 ngx_http_referer_module 来防止文件的热链接:

valid_referers none blocked server_names;
location /style/ {
    if ($invalid_referer) {
        return 403;
    }
    root /path/to/files;
}

在文档中查找详细信息 - http://nginx.org/en/docs/http/ngx_http_referer_module.html