直接回答:不要用 Access-Control-Allow-Origin: * 放开所有来源,改成用 map 定义白名单再回填 $http_origin,同时记得加上 Vary: Origin,避免缓存把跨域头串到别的域名上。
关于跨域的配置
配置多个域
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15map $http_origin $corsHost {
default 0;
"~https://www.itbiancheng.com" https://www.itbiancheng.com;
"~http://love.itbiancheng.com" http://love.itbiancheng.com;
}
server
{
listen 80;
server_name www.itbiancheng.com;
root /nginx;
location /
{
add_header Access-Control-Allow-Origin $corsHost;
}
}配置单个域
1
add_header Access-Control-Allow-Origin http://love.itbiancheng.com;
关于默认404的配置
1 | error_page 400 401 402 403 404 500 501 502 503 504 /404.jpg; |
关于referers的配置
1 | valid_referers none blocked 192.168.1.100 localhost henan.sf6.online 192.168.1.100; |
其中 none和blocked是没有referer头和被清除了referer值
关于屏蔽nginx版本
1 | fastcgi_intercept_errors on; |
这个需要配置到nginx块中
这篇笔记整理自我自己的实践记录,如果做法有出入,或者你踩过别的坑,欢迎到留言板一起聊聊。