nginx upstream 接口跨域
时间: 2024-08-16 12:04:37 浏览: 58
Nginx的upstream模块用于负载均衡,当涉及到跨域访问时,upstream可以配合Nginx的CORS(Cross-Origin Resource Sharing,跨源资源共享)功能来处理。如果你有多个服务器(例如通过upstream配置的),并且这些服务器位于不同的域名下,你需要在Nginx的server块中设置允许特定来源的跨域请求。
以下是一个基本示例:
```nginx
location /api {
add_header 'Access-Control-Allow-Origin' '*'; # 允许所有来源
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Content-Type';
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Max-Age' 1728000; # 响应预检请求,允许缓存
add_header 'Content-Length' 0;
return 204;
}
proxy_pass http://backend.example.com/api; # 这里是upstream配置
}
```
在这个例子中,`/api`路径下的请求会转发到`http://backend.example.com/api`,并且设置了允许任何来源(`'*'`)的CORS策略。如果请求是OPTIONS类型的“预检”请求,Nginx会返回一个空响应头(防止实际数据传输)。