Nginx 中配置跨域

允许单域名跨域

如果只需要允许一个域名跨域,直接在 server 段中添加以下配置:

location / {
    add_header Access-Control-Allow-Origin 'http://example.com';
    add_header Access-Control-Allow-Credentials 'true';
    add_header Access-Control-Allow-Methods 'PUT, POST, GET, DELETE, OPTIONS';
    add_header Access-Control-Allow-Headers 'Content-Type, Authorization';
    if ($request_method = 'OPTIONS') {
        return 204;
    }
}

允许多域名跨域

如果需要允许多域名跨域,可以先在 http 段中添加以下配置:

map $http_origin $cors_origin {
    default 0;
    "~http://example.com" http://example.com;
    "~http://www.example.com" http://www.example.com;
}

然后在 server 段中添加以下配置:

location / {
    add_header Access-Control-Allow-Origin $cors_origin;
    add_header Access-Control-Allow-Credentials 'true';
    add_header Access-Control-Allow-Methods 'PUT, POST, GET, DELETE, OPTIONS';
    add_header Access-Control-Allow-Headers 'Content-Type, Authorization';
    if ($request_method = 'OPTIONS') {
        return 204;
    }
}

最后重启 nginx 服务生效。