nginx中nginx防盗链设置和重定向规则

rewrite命令
nginx的rewrite相当于apache的rewriterule(大多数情况下可以把原有apache的rewrite规则加上引号就可以直接使用),它可以用在server,location 和IF条件判断块中,命令格式如下:
rewrite 正则表达式 替换目标 flag标记
flag标记可以用以下几种格式:
last – 基本上都用这个Flag。
break – 中止Rewirte,不在继续匹配
redirect – 返回临时重定向的HTTP状态302
permanent – 返回永久重定向的HTTP状态301
例如下面这段设定nginx将某个目录下面的文件重定向到另一个目录,$2对应第二个括号(.*)中对应的字符串:

 代码如下 复制代码
location /download/ {
rewrite ^(/download/.*)/m/(.*)..*$ $1/nginx-rewrite/$2.gz break;
}

nginx重定向的IF条件判断
在server和location两种情况下可以使用nginx的IF条件判断,条件可以为以下几种:
正则表达式

如:
匹配判断
~  为区分大小写匹配; !~为区分大小写不匹配
 ~* 为不区分大小写匹配;!~为不区分大小写不匹配
例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:

 代码如下 复制代码
if ($http_user_agent ~ MSIE) {
rewrite ^(.*)$ /nginx-ie/$1 break;
}

文件和目录判断
  -f和!-f判断是否存在文件
 -d和!-d判断是否存在目录
 -e和!-e判断是否存在文件或目录
 -x和!-x判断文件是否可执行
例如下面设定nginx在文件和目录不存在的时候重定向:

 代码如下 复制代码

if (!-e $request_filename) {
proxy_pass http://127.0.0.1;
}

return

返回http代码,例如设置nginx防盗链:

 代码如下 复制代码
location ~* .(gif|jpg|png|swf|flv)$ {
valid_referers none blocked www.111cn.net www.leizhenfang.com;
if ($invalid_referer) {
return 404;
}
}

set
设置nginx变量

nginx最简单的防盗链设置如下

 代码如下 复制代码
location ~* .(gif|jpg|png|swf|flv)$ {
valid_referers none blocked www.111cn.net;
if ($invalid_referer) {
return 403;
}
}

通过nginx的重定向方式返回403错误。

NginxHttpAccessKeyModule实现防盗链
需要先安装nginx的NginxHttpAccessKeyModule模块。其运行方式是:如我的nginx目录下有一个file.gz 的文件。对应的URI 是http://www.111cn.net/nginx/file.gz
若用ngx_http_accesskey_module 后则根据用户的IP生成一个key值,如下的链接来访问http://www.111cn.net/ . 只有给定的key值正确了,才能够下载nginx目录下的file.gz,这样就可以避免被盗链了。

时间: 2024-08-27 23:08:36

nginx中nginx防盗链设置和重定向规则的相关文章

Nginx中图片防盗链设置方法详解

由于有时候一些其他网站会调用本站的图片,nginx本身是可以屏蔽其他网站调用本站图片,方式如下: 根据后缀: location ~ \.(gif|jpg|png|swf|flv|bmp)$ {     valid_referers none blocked *. 111cn.net;     if ($invalid_referer) {     return 404; } } 根据目录:  location /images/ {   root /web/site/www/;   valid_r

Windows系统中IIS防盗链设置详细介绍

首页我们安装一个组件:isapi.msi 安装完后,对软件安装目录的IIS_WGP组的读写权限(重要,如果不设置安装完后你的网站就会直接Service Unavailable,无法访问). 假如你的安装目录是D:Program FilesHeliconISAPI_Rewrite(默认安装目录是Program FilesHeliconISAPI_Rewrite,我们可以先建立),右击ISAPI_Rewrite,选择"属性"->"安 全"->"添加

Nginx服务器下防盗链的方法介绍_nginx

修改 /usr/local/nginx/conf/nginx.conf 这个配置文件. 找到 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; }[/code] 修改成: location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { valid_referers none blocked *.jannn.com jannn.com; if($invalid_referer) { rewrite ^/ y

Nginx 防盗链设置

何谓'盗链' 此内容不在自己服务器上,而通过技术手段,绕过别人放广告有利益的最终页,直接在自己的有广告有利益的页面上向最终用户提供此内容. 常常是一些名不见经传的小网站来盗取一些有实力的大网站的地址(比如一些音乐.图片.软件的下载地址)然后放置在自己的网站中,通过这种方法盗取大网站的空间和流量. 比较明显的是图片资源,自己的服务器不存储图片资源,而使用别人的图片资源,这样无需承担图片的存储跟流量所产生的费用.总之,是非常无耻的行径. 如何防盗链 要实现防盗链,需要了解HTTP协议中的请求头部 R

通过lua来配置实现Nginx服务器的防盗链功能_nginx

下载服务器时常被人盗链,时间久了导致服务器大量资源浪费,由于服务器使用nginx做为web服务器.nginx的防盗链方法有很多,可以使用现成的防盗链模块nginx-accesskey-2.0.3,编译ningx时添加此模块即可. 由于服务其他业务需要,所以nginx编译了lua模块,所以就想通过lua来实现下载服务器的防盗链功能(通过lua的Nginx模块lua_nginx_module.这里不再详细介绍配置过程),这样就可以免去了accesskey模块.原理就是生成经过处理过的下载链接,然后下

求助!关于.Net MVC中伪静态和防盗链设置的一些问题

问题描述 最近公司项目有一个需求是这样的,先说一下,项目用的是纯MongoDB,需求就是用户上传的附件要求在数据库里备份一份,本地静态文件夹中存一份,如果静态文件被人误删,可以通过数据库恢复到本地静态地址.一看到这个需求我就想起了利用防盗链的做法来实现"浏览器输入静态文件地址,后端拦截静态请求,先做判断处理,如果文件被误删,则先恢复后再响应,从而确保静态文件(图片)永远不会丢失",于是我百度了一下找到了好几种做法,都试了,都不行.先说第一种,自己重写一个IRouteHandler,然后

php图片文件 下载文件 防盗链设置方法

php防盗链  代码如下 复制代码 <?php session_start(); session_register('check'); $_SESSION['check']=true; ?> 检查session变数,判断是否造访首页.并且检查他的来源网页参考(HTTP_REFERER)是否来自本地网站的网页. 方法如下:  代码如下 复制代码 <?php session_start(); $refs = parse_url($_SERVER['HTTP_REFERER']); //分解参

Apache中.htaccess 防盗链配置方法

先我们apache如果没有开启支持.htaccess , 可如下操作 开httpd.conf文件用文本编辑器打开后,查找  代码如下 复制代码 Options FollowSymLinks AllowOverride None 改为: Options FollowSymLinks AllowOverride All   可是我在我的httpd.conf文件里根本没有发现Options FollowSymLinks 之类的东西.我只好将  代码如下 复制代码   Options FollowSym

Apache防盗链设置

如果你的站点是一个图片站,有很多非常漂亮的美女图片,那我相信,时间久了会有很多人来你网站借图片,有的人直接下载走了,还有的人直接取走图片的地址,比如你的网站域名是www.123.com,图片地址为www.123.com/images/111.jpg,那么他就可以直接把这个地址放到他自己的网站上,他的用户可以直接从他网站上查看这个图片,而实际上浏览这个图片是从你的网站上访问的.这样,这个图片所产生的带宽开销对于你来说没有任何意义,毕竟看这个图片的人不是你的客户,而是人家的.明白了这个道理,那我们就