Appearance
跨域配置与防盗链
跨域配置
跨域资源共享(CORS)允许浏览器向不同域名的服务器发起请求。Nginx 可以通过设置 HTTP 响应头来实现 CORS 支持,配置示例:
nginx
server {
listen 80;
server_name example.com;
location / {
# 允许所有域名访问
add_header 'Access-Control-Allow-Origin' '*';
# 允许的请求方法
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
# 允许的请求头
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
# 预检请求缓存时间
add_header 'Access-Control-Max-Age' 1728000;
# 允许携带凭证(如 Cookie)
add_header 'Access-Control-Allow-Credentials' 'true';
# 处理 OPTIONS 预检请求
if ($request_method = 'OPTIONS') {
return 204;
}
# 其他代理配置
proxy_pass http://backend;
}
}
关键配置项
Access-Control-Allow-Origin
:允许访问的域名,*
表示允许所有域名。Access-Control-Allow-Methods
:允许的 HTTP 方法(如 GET、POST)。Access-Control-Allow-Headers
:允许的请求头。Access-Control-Max-Age
:预检请求的缓存时间(秒)。Access-Control-Allow-Credentials
:是否允许携带凭证(如 Cookie)。
注意事项
如果允许特定域名访问,可以将
*
替换为具体的域名,例如:nginxadd_header 'Access-Control-Allow-Origin' 'https://example.com';
如果需要支持带凭证的请求(如 Cookie),
Access-Control-Allow-Origin
不能为*
,必须指定具体域名。
防盗链配置
防盗链(Hotlink Protection)用于防止其他网站直接引用你的资源(如图片、视频),从而减少带宽消耗和资源滥用。
nginx
server {
listen 80;
server_name example.com;
location ~* \.(jpg|jpeg|png|gif|mp4)$ {
# 允许空 Referer(直接访问)和本站域名访问
valid_referers none blocked example.com *.example.com;
# 如果 Referer 不合法,返回 403 或重定向到其他图片
if ($invalid_referer) {
return 403;
# 或者重定向到一张提示图片
# rewrite ^/.*$ /anti-hotlink.jpg break;
}
# 其他代理配置
proxy_pass http://backend;
}
}
关键配置项
valid_referers
:定义合法的 Referer 来源:none
:允许空 Referer(直接访问)。blocked
:允许没有协议头(如http://
或https://
)的 Referer。example.com
:允许指定域名访问。*.example.com
:允许子域名访问。
$invalid_referer
:如果 Referer 不合法,返回 403 或重定向。- 防盗链配置通常用于静态资源(如图片、视频)。