在Nginx中,要允许来自多个特定域名的CORS跨域请求,通常情况下Access-Control-Allow-Origin响应头只能设置一个单一的origin。然而,出于安全考虑,标准的CORS规范并不直接支持在该头中列出多个明确的域名。 但是,如果你确实需要为多个指定域名启用CORS,你可以通过使用Nginx的逻辑判断(if条件或者map指令)来动态设置这个响应头。下面是一个使用if指令的示例:
location / {
if ($http_origin ~* (https?://domain1.com|https?://domain2.com)) {
add_header 'Access-Control-Allow-Origin' "$http_origin";
}
# ... 其他配置 ...
}
在这个例子中,如果请求的 Origin 头的值是 http://domain1.com 或 http://domain2.com,Nginx 将添加一个 Access-Control-Allow-Origin 响应头,并将其值设置为请求的 Origin 头的值。
请注意,使用 if 指令可能会导致一些不可预见的问题,因为在 Nginx 中,if 有其自己的作用域,可能会影响其他配置。因此,你应当小心使用,并确保充分测试你的配置。
在实际部署之前,确保你已经了解了相关的 CORS 规范,并且你的 Nginx 配置符合你的安全策略。