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 或重定向。- 防盗链配置通常用于静态资源(如图片、视频)。
