要在 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 并包含該模塊。