Nginx反向代理可以支持跨域请求。通常情况下,跨域请求是指在浏览器中从一个域名访问另一个域名的资源。跨域资源共享(CORS)是一种机制,它使用额外的HTTP头来告诉浏览器允许该网页访问来自不同域名服务器上的指定资源。
在Nginx中启用CORS支持可以使用add_header指令来添加响应头。以下是一个示例Nginx配置文件片段,演示如何配置CORS:
location /api/ {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
proxy_pass http://backend/;
}
上述示例配置中的add_header指令添加了以下响应头:
- Access-Control-Allow-Origin:允许所有来源的访问
- Access-Control-Allow-Methods:允许GET、POST、OPTIONS请求
- Access-Control-Allow-Headers:允许DNT、User-Agent、X-Requested-With、If-Modified-Since、Cache-Control、Content-Type和Range请求头
- Access-Control-Expose-Headers:允许Content-Length和Content-Range响应头
请注意,将add_header指令添加到配置文件中的位置非常重要。确保它们在代理请求到后端服务器之前添加,以便它们被包含在返回的响应中。
另外,请注意,如果您使用的是WebSocket协议进行跨域请求,则需要在Nginx配置文件中添加以下指令:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
这些指令允许Nginx在WebSocket连接期间保持持久连接。