Nginx:阻止直接访问静态文件

Edu*_*ard 2 nginx

我一直在寻找一段时间,但没有找到任何符合我需求的东西.我不需要热链接保护,因为我想阻止人们直接访问我的文件.让我们说:

我的website.com请求website.com/assets/custom.js,这是有效的,但我想直接访问此文件的访问者得到一个403 status code或什么.我真的不知道是否可能,而且我没有任何合乎逻辑的步骤.

问候 !

mr_*_*ron 9

您可以使用nginx referer模块:http://nginx.org/en/docs/http/ngx_http_referer_module.html.像这样的东西:

server {
    listen 80;
    server_name website.com;
    root /var/www/website.com/html ;
    location /assets/ {
        valid_referers website.com/ website.com/index.html website.com/some_other_good_page.html ;
        if ($invalid_referer) {
            deny all;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这个配置保护assets目录.但请记住,这不能保证并且仅适用于浏览器 - 任何机构都可以使用curl或telnet模拟有效请求.为了确保安全,您需要使用动态生成的页面和动态生成的链接.

  • 我对nginx一无所知但是你不必在某处定义var $ invalid_referer吗? (2认同)