nginx 跨域 proxy_pass配置变量
时间: 2024-08-27 09:01:06 浏览: 81
Nginx 的 `proxy_pass` 配置是一个重要的反向代理指令,用于将请求转发到其他服务器或服务。当处理跨域请求时,可以利用 `proxy_pass` 结合一些特殊的变量来进行定制。对于允许跨域访问,通常需要设置 `allow_all` 或者自定义 `Access-Control-Allow-Origin` 响应头。
以下是一个基本的示例,展示如何使用 `proxy_pass` 和 `$host` 变量处理跨域:
```nginx
location /api {
# 设置代理目标
proxy_pass http://backend.example.com;
# 允许来自特定源的跨域请求
add_header 'Access-Control-Allow-Origin' $http_origin;
add_header 'Access-Control-Allow-Methods' 'GET, POST';
add_header 'Access-Control-Allow-Headers' 'Content-Type';
# 对于OPTIONS预检请求(CORS),允许特定方法并返回允许头部信息
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Max-Age' 1728000; # 缓存一月
add_header 'Access-Control-Allow-Credentials' 'true'; # 如果需要发送凭据
add_header 'Access-Control-Allow-Headers' '*';
add_header 'Content-Length' 0;
return 204;
}
}
```
在这个例子中,`$http_origin` 是从客户端来的请求头中提取的 `Origin` 字段值,用于检查是否允许来自该源的请求。如果需要更精确地控制允许的源列表,可以使用正则表达式或其他条件判断。
阅读全文