# 跨域配置
跨域资源共享(CORS)允许浏览器向不同域名的服务器发起请求。Nginx 可以通过设置 HTTP 响应头来实现 CORS 支持,配置示例:
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;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 关键配置项
Access-Control-Allow-Origin
:允许访问的域名,*
表示允许所有域名。Access-Control-Allow-Methods
:允许的 HTTP 方法(如 GET、POST)。Access-Control-Allow-Headers
:允许的请求头。Access-Control-Max-Age
:预检请求的缓存时间(秒)。Access-Control-Allow-Credentials
:是否允许携带凭证(如 Cookie)。
# 注意事项
如果允许特定域名访问,可以将 *
替换为具体的域名,例如:
add_header 'Access-Control-Allow-Origin' 'https://example.com';
1
如果需要支持带凭证的请求(如 Cookie),
Access-Control-Allow-Origin
不能为*
,必须指定具体域名。
# 防盗链配置
防盗链(Hotlink Protection)用于防止其他网站直接引用你的资源(如图片、视频),从而减少带宽消耗和资源滥用。
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;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 关键配置项
- valid_referers:定义合法的 Referer 来源:
none
:允许空 Referer(直接访问)。blocked
:允许没有协议头(如http://
或https://
)的 Referer。example.com
:允许指定域名访问。*.example.com
:允许子域名访问。
$invalid_referer
:如果 Referer 不合法,返回 403 或重定向。- 防盗链配置通常用于静态资源(如图片、视频)。