博主信息
博文 81
粉丝 1
评论 0
访问量 146960
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
nginx 配置文件的 Rewrite功能介绍和防盗链实现。
有什么是忘不了的的博客
原创
1021人浏览过

**Rewrite功能的配置**

*Rewrite概念*

地址重写和地址转发。当网站改变网址了,可以让用户原先保存的书签照样可以访问。也无需更换其他网站到我们网站的友情链接。

*地址重写*

概念:当我们访问 www.google.com 和 google.cn 都可以访问到谷歌,只不过在访问google.cn的时候把他转为 www.google.com 。

*地址转发*

概念:将一个域名指向一个已存在的站点的过程。

*地址重写和地址转发的区别*

1、转发不会改变浏览器地址栏的地址,而重写会。

2、转发只会发送一次网络请求,重写会发送两次。

3、转发一般用在站内,重写没有限制。

4、转发可以不写全地址,重写必须写全。

....

*rewrite*   注意在进行正则匹配的时候用到 {} 必须要加上引号给uri 否则会保错。

rewrite regex replacement

`rewrite` :是指令,可以用再server块和location块使用。

`regex`:匹配的uri, uri和url是不同的,如https://www.123du.cc/dudu-37/648524/ uri是/dudu-37/648524/部分。 可以匹配一部分数据然后,在replacement里使用。

`replacement`:匹配成功后跳转的地址,如:https://www.baidu.com/

*例子*

rewrite ^/   https://www.baidu.com/ #匹配成功跳入百度

rewrite ^(/.* )(\.php)    https://www.baidu.com$1$2  #匹配成功后,吧获取的参数 $1 $2 追加给百度链接后面,

如:访问 https://www.123du.cc/dudu-37/648524/ 跳转到 https://www.baidu.com/dudu-37/648524/


*利用Rewrite功能做防盗链*

location  ~*  ^.+\.(gif|jpg|png|swf|flv|rar|zip)$ {

valid_referers none blocked www.baidu.com ;

if ($invalid_referer) {

rewrite ^/     https://www.baidu.com/images/abc.png;

}

}

*解析*

`location`:匹配uri的指令。

`valid_referers` : 获取Referer头域的值,并根据这个值来改变 全局变量 $invalid_refere 的值。

`none`: Referer头域的值为空,的时候。

`blocked`:Referer头域的值被代理服务器或防火墙删除或伪装的情况下。

`server_name`:允许访问的域名或ip可以设置多个,可以使用通配符`*`,我这里是‘www.baidu.com’。

当valid_referers 匹配成功的时候回吧全局的 $invalid_referer设置为0,匹配不成功设置为1。

`rewrite `:条件成立,直接给他返回个图片地址。你也可以设置成HTTP状态码。直接return 404;

这里有个需要注意的问题:

    重启nginx报错:nginx: [emerg] unknown directive "if($invalid_referer)" in /etc/nginx/nginx.conf:47

    这是因为需要给 if ($invalid_referer) { }加空格,要不nginx就认为这个整体这是一个指令。所以报指令不存在的错误。

    而且,nginx需要语句需要必须以 ; 结尾。












本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学