请选择 进入手机版 | 继续访问电脑版

关于nginx屏蔽referer的坑

[复制链接]
尊悦模具刘沛昌 发表于 2020-12-31 19:21:30 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
Nginx可以通过设置实现通过Http包头中的Referer实现防盗链。在http请求的跳转过程中,Http包头中会到场Referer参数,指明跳转的来源。通过这个可以实现简朴的防盗链功能。
网上百度的大概如下:
详细的Ngnix设置如下:`
server {
listen 80;
server_name localhost;
  1.     location / {        valid_referers none blocked domain.com *.domain.com server_names ~\.google\. ~\.baidu\.;        add_header bbb "$host";        add_header aaa "$remote_addr";        if ($invalid_referer) {           return 403;        }        proxy_pass https://www.jameswei.net/;    }
复制代码
}`
但实际过程中我们想屏蔽referer中带的某个单独字符串,在更改valid_referers 多次无果后认真研究了nginx关于http-referer模块的文档后终于搞定
  1. valid_referers none blocked 'top1top1.top' 'shandiandxshop.xyz';  if ($invalid_referer) {    return 403 'Would you like to have tea?';  }
复制代码
关于 ngx_http_referer_module 参数说明:(译文来自有道词典)
none:the “Referer” field is missing in the request header;
中文翻译:请求头中缺少“Referer”字段;
blocked:the “Referer” field is present in the request header, but its value has been deleted by a firewall or proxy server; such values are strings that do not start with “http://” or “https://”;
中文翻译:“Referer”字段存在于请求头中,但其值已被防火墙或署理服务器删除;不以“http://”或“https://”开头的字符串;
server_names:the “Referer” request header field contains one of the server names;
中文翻译:“Referer”请求头字段包罗一个服务器名称;
arbitrary string:defines a server name and an optional URI prefix. A server name can have an “”at the beginning or end. During the checking, the server’s port in the “Referer” field is ignored;
中文翻译:定义服务器名称和可选的URI前缀。服务器名称可以在开头或末了有一个“
”。在检查过程中,“Referer”字段中的服务器端口被忽略;
从文档中可以看出想屏蔽 *.baidu.com 时,必须给按照字符串形式举行屏蔽,即给屏蔽的域名加上单引号。

来源:https://blog.csdn.net/plkiop911/article/details/111995949
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )