nginx防盗链有效,但是连本地的图片也一起拦截了

在后台编辑上传的图片成功了,但是图片显示不了,直接访问aaa.com/test.png Nginx返回403,
经过多次网上搜索答案尝试之后,无功而返,黔驴技穷。各位大神帮看看咋回事,server段的代码如下:

server {
        listen       80;
        server_name  aaa.top aaa.top;
        root    /home/aaa/webroot;    
        
        location / {
           root  /home/aaa/webroot;
           proxy_pass http://myser;
        }
        
        #禁止直接访问tomcat下的WEB-INF目录
        location ~ ^/(WEB-INF)/ { 
            #deny all; 
            return 404;
        }
        
        location ~* \.(gif|jpg|jpeg|bmp|png|ico|txt|swf|pdf|xls|xlsx|doc|jif|js|css)$ { 
            access_log off;
            expires 24h;
            valid_referers none blocked www.aaa.top aaa.top;
            if ($invalid_referer) {
                return   403;
            }
        
        }

        #禁止访问这些目录下的可执行文件
        location ~* /(upload|cache)/.*.(php|pl|py|jsp|sh|cgi|asp)$ {
            deny    all;
        }

}

阅读 4.8k
3 个回答

很有可能是nginx进程没有权限访问/home/aaa/webroot
建议看下目录的权限和所有者,nginx的运行用户
另外错误日志应该有详细信息

更新

那就是你的正则错啦,给你个正则参考参考

location ~ .*\.(gif|jpg|jpeg|png)${
}

你的配置中校验了 Referer,直接访问图片地址是不带 Referer 的,你把 Referer 校验去掉。

@MrGeneral 我把B段校验Referer的注释掉了,但是还是403(确认重启成功了);把整个A段去掉的话,就能访问了,咋弄
图片描述

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题