nginx跨站访问设置
location ~ .*\.(html|htm)$ {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
#Access-Control-Allow-Credentials true #允许cookie跨域
}
- 在响应中指定
Access-Control-Allow-Credentials
为 true 时,Access-Control-Allow-Origin 不能指定为 *
,需要指定到具体域名 - 相关跨域内容可参考 Laravel 跨域功能中间件 使用代码实现跨域,原理与nginx跨域配置相同
防盗链
- 防止服务器内的静态资源被其他网站所套用 - 首先,需要理解一个nginx变量 -
$http_referer
#表示当前请求上一次页面访问的地址,换句话说,访问www.baidu.com
主页,这是第一次访问,所以$http_referer
为空, - 但是 访问此页面的时候还需要获取一张首页图片,再请求这张图片的时候$http_referer
就为www.baidu.com
然后配置
location ~ .*\.(jpg|gif)$ {
#valid_referers 表示我们允许哪些 $http_referer 来访问
#none 表示没有带 $http_referer,如第一次访问时 $http_referer 为空
#blocked 表示 $http_referer 不是标准的地址,非正常域名等
#只允许此ip
valid_referers none blocked 127.xxx.xxx.xx
if ($invalid_referer) { #不满足情况下变量值为1
return 403;
}
}