文档章节

Nginx 手记(七)跨域访问与防盗链

神奇Sam
 神奇Sam
发布于 2017/08/30 14:45
字数 468
阅读 210
收藏 0

一、跨域访问

场景:访问 http://www.a.com 时候,返回的页面通过ajax去访问 http://www.b.com 获取资源,这种称之为跨域访问。
浏览器默认禁止跨域访问,原因:不安全,容易出现CSRF攻击!

Nginx 打开跨域访问

实现原理:

浏览器通过读取判断服务端响应的头信息中的 Access-Control-Allow-Origin 来决定是否允许跨域访问。如果服务端配置了 Access-Control-Allow-Origin 允许跨域访问,客户端则会遵循服务端配置。
1、配置语法
#添加头信息
语法:add_header name value [always];
默认值:无
上下文:http,server,location,if in location
2、配置示例
在server中配置 vim conf.d/default.conf
location ~ .*\.(htm|html)$ {
    #add_header Access-Control-Allow-Origin *;  #允许所有站点跨域访问
    add_header Access-Control-Allow-Origin http://www.sam.com;  #只允许http://www.sam.com 跨域访问
    add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
    root /opt/site/sam;
}

二、防盗链

目的:保证信息安全,防止资源被盗用,避免服务器无效的性能损耗。

简单实现

基于http_refer防盗链配置模块。http_refer 存在于http请求头信息中,在nginx中可以通过 $http_referer 获取该变量。
简单配置
#匹配图片资源
location ~ .*\.(jpg|gif|png)$ {
    #配置允许访问的refer信息条件
    #none:   允许没有带refer信息进行访问
    #blocked:允许refer信息不是标准的http协议信息的请求进行访问
    #ip或域名:允许该ip或域名进行访问
    #使用正则:允许符合正则的请求进行访问
    valid_referers none blocked 192.168.0.100 ~/google\./;
    if($invalid_referer){   #如果refer无效不符合条件的,则直接返回403
        return 403;
    }
    root /opt/site/sam/images;
}
测试
# 使用curl命令测试
# -e 指定其refer信息
[root@sam ~]# curl -e "http://www.a.com" -I http://192.168.0.100/test.png
HTTP/1.1 403 Forbidden
Server: nginx/1.12.1
Date: Wed, 19 Jul 2017 17:44:00 GMT
Content-Type: text/html
Content-Length: 169
Connection: keep-alive

© 著作权归作者所有

共有 人打赏支持
神奇Sam
粉丝 22
博文 41
码字总数 27998
作品 0
广州
程序员
第五章:nginx静态+代理+缓存+负载均衡详解

一、静态资源WEB服务 非服务器动态运行生成的文件 配置语法-文件读取 配置语法-tcp_noposh(sendfile开启时,提高网络传输效率) 配置语法-tcp_nodelay 配置语法-压缩 扩展Nginx压缩模块 ht...

FantJ
01/02
0
0
【PDF分享】Nginx 常见应用技术指南[Nginx Tips] 第二版.pdf

文档目录: 一、Nginx 基础知识 二、Nginx 安装及调试 三、Nginx Rewrite 四、Nginx Redirect 五、Nginx 目录自动加斜线: 六、Nginx Location 七、Nginx expires 八、Nginx 防盗链 九、Nginx...

鉴客
2010/09/12
1K
4
Nginx系列-5.配置Nginx的防盗链

Nginx系列-5.配置Nginx的防盗链 目录 - Nginx系列 Nginx系列-1.Linux下安装Nginx Nginx系列-2.配置LNMP(Linux、Nginx、MySQL、PHP)架构 Nginx系列-3.配置Nginx虚拟主机 Nginx系列-4.Nginx日...

ngle
06/08
0
0
基于CentOS7上的nginx系统优化

基于CentOS7上的nginx系统优化 隐藏版本信息 首先在CentOS7上安装好nginx服务之后,可以查看当前的nginx版本信息: 为了避免版本信息泄露,从而导致不必要的麻烦,下面介绍两种隐藏版本信息的...

漂移的兔子
07/01
0
0
nginx系统真正有效的图片防盗链完整设置详解

关于nginx防盗链的方法网上有很多教程,都可以用,但是我发现很多教程并不完整,所做的防盗链并不是真正的彻底的防盗链! 一般,我们做好防盗链之后其他网站盗链的本站图片就会全部失效无法显...

gutaotao1989
2017/08/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

谷歌 Fuchsia 上手体验,将取代Android/win10

在手机市场领域,Google表现很抢眼,毫无疑问,Android 至今在移动操作系统的市场份额占据绝对领先地位,但是 Android 仍然存在不少问题,碎片化问题严重,在平板以及大屏幕设备上表现糟糕,...

linux-tao
18分钟前
1
0
List、Array与ArrayList

数组在内存中是连续存储的,所以它的索引速度很快,而且赋值和修改元素也非常快,比如: string[] s=new string[3];//赋值 s[0]="a"; s[1]="b"; s[2]="c";//修改 s[1]="b1"; 但是数组...

shimmerkaiye
20分钟前
0
0
Linux 的Lnmp环境下为mysql添加环境变量

一.问题 在Linux 安装完Lnmp 环境后 , 连接Mysql 告诉没有这条命令 mysql -uroot -p 命令失效 因为是源码安装的,所以会出现这样的的原因 。集成环境是不会出现的。 其实很简单,只需要给m...

15834278076
22分钟前
3
0
apolloxlua include函数

include函数不是单独使用的函数, 他并不是标准库的一部分, 你可以使用include函数将某个后缀为 .aop的文档包含到你的文档流中。 因为include是单独处理流, 所以不会在主处理流程中有所表示...

钟元OSS
26分钟前
0
0
【转载分享】做一名较真的工程师

近些年与我共事过的同事,一定知道我至今仍有一个较真的性格。我会:指出同事所写代码的不当命名问题(并帮助改进);指出同事所写文档中的逻辑混乱问题(并辅以修订);指出同事所写PPT中乱...

HellerZhang
28分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部