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-Credentialstrue 时,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;
    }
}