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
我在 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