DNS 域名解析原理,Nginx跨域,Nginx防盗

## 一.DNS域名解析 ![访问传统服务器](https://upload-images.jianshu.io/upload_images/8574472-1512aa7f458ee647.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![访问Nginx服务器,Tomcat集群节点 应该只作为内网可访问](https://upload-images.jianshu.io/upload_images/8574472-3e7fb23e5a23534e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ### 修改配置文件 vim /etc/hosts ``` # 添加该记录 注意: 192.168.0.101 一定是相对于本机的内网 192.168.0.101 www.imooc.com ``` ### 使用SwitchHosts ![SwitchHosts 添加DNS解析记录](https://upload-images.jianshu.io/upload_images/8574472-6eb578e9af958908.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ## 二.Nginx 跨域 ``` 1.在server里面添加 # 允许跨域请求的域 * 代表所有 add_header 'Access-Control-Allow-Origin' '*'; # 允许携带cookie请求 add_header 'Access-Control-Allow-Credentials' 'true' ; # 允许请求的方法 add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; # 允许请求的header add_header 'Access-Control-Allow-Headers' 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,Keep-Alive,X-Requested-With,Pragma,Cache-Control,If-Modified-Since'; 2.在location中添加 if ($request_method = 'OPTIONS') { return 200; } ``` ## 三.Nginx防盗链 有时候在浏览网页的时候,会遇到某些文件(图片等)无法访问的情况,这是因为图片的所有方做了防盗链机制 了解防盗链之前先了解下`http referer`这个属性,`http referer`是请求头中的一部分,当浏览器向`web`服务器发出请求时,一般会带上这个属性用来表明网页的来源。 防盗链的基本原理就是根据请求头中`referer`属性得到网页来源,从而实现访问控制。 ![打开了一个百度热搜](https://upload-images.jianshu.io/upload_images/8574472-163889b726b9ae94.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 为什么要实现防盗链?首先这些非法访问并不会给网站带来利益或好处,相反,这会浪费网站的带宽,增加服务器的连接压力,比如有些网站是按流量收费的,那么只要有人访问了盗用图片或其他文件的网站,网站就要支付这部分的流量费用。 ``` location ~* \.(gif|jpg|swf|png|jpeg)$ { root /home/foodie-shop; # 一定要配置 否则404 valid_referers none blocked 49.235.110.134; if ($invalid_referer) { #return 403; rewrite ^/ http://img.lovingliu.cn/default.jpg; } } ``` `valid_referers`这个关键字定义了白名单 `invalid_referer`是内置变量,通过判断上一行中的`valid_referers`值会返回0或者1。 - `none`代表请求头中没有`referer`信息,这一般是直接在浏览器输入图片网址 - `blocked`代表被防火墙过滤标记过的请求 `return 403`如果访问来源不在白名单内,则返回403错误 `rewrite ^/ http://$host/loading.png`可以通过设定指定的图片来代替目标图片 这种实现可以限制大多数普通的非法请求,但不能限制有目的的请求,因为这种方式可以通过伪造referer信息来绕过。

你可能感兴趣的:(DNS 域名解析原理,Nginx跨域,Nginx防盗)