要在 Nginx 上配置跨域支持多个域名,你可以使用 add_header
指令在响应头中添加 Access-Control-Allow-Origin
头,指定允许的域名。以下是一个示例配置:
server {
listen 80;
server_name yourdomain.com;
location / {
# 允许多个域名,使用逗号分隔
add_header Access-Control-Allow-Origin "http://example1.com, http://example2.com";
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
add_header Access-Control-Allow-Headers "Authorization, Content-Type";
# 其他配置...
}
}
在上述配置中,Access-Control-Allow-Origin
头中指定了需要允许的多个域名,使用逗号分隔。你也可以使用通配符 *
来允许所有域名,但这并不推荐,因为会存在安全风险。
此外,add_header Access-Control-Allow-Methods
指令用于指定允许的 HTTP 方法,add_header Access-Control-Allow-Headers
指令用于指定允许的请求头。
如果你在配置中使用了 add_header
指令,但仍然无效,可能是因为之前的响应头中已经存在了 Access-Control-Allow-Origin
头。你可以通过以下方法解决这个问题:
add_header Access-Control-Allow-Origin
。Access-Control-Allow-Origin
头。如果应用程序已经设置了该头,Nginx 配置中的设置将会被覆盖。more_set_headers
模块来覆盖之前的 Access-Control-Allow-Origin
头:server {
listen 80;
server_name yourdomain.com;
location / {
# 覆盖之前的 Access-Control-Allow-Origin 头
more_set_headers "Access-Control-Allow-Origin: http://example1.com, http://example2.com";
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
add_header Access-Control-Allow-Headers "Authorization, Content-Type";
# 其他配置...
}
}
使用 more_set_headers
指令需要安装 ngx_http_headers_more_filter_module
模块,你可以通过 nginx -V
命令查看你的 Nginx 是否已经安装了该模块。如果没有安装,你需要重新编译 Nginx 并包含该模块。