刹那的菜鸟

博客园 首页 新随笔 联系 管理

在 Nginx 配置中,要实现对特定路径(例如 /api/)的 GET 和 POST 请求进行反向代理,并且允许跨域请求,你需要确保配置正确地处理了这些请求,并且设置了适当的 CORS 头。以下是 Nginx 配置的一个示例:

location /api/ {
# 允许跨域请求的域名,* 代表允许所有域名
add_header Access-Control-Allow-Origin *;

# 允许的请求头
add_header Access-Control-Allow-Headers 'Authorization,Content-Type,Accept,Origin';

# 允许的方法
add_header Access-Control-Allow-Methods 'GET,POST,OPTIONS';

# 代理设置
proxy_pass http://localhost:5000;

# 设置代理请求头
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

# 连接后端服务器超时时间
proxy_connect_timeout 90;

# 读取后端服务器响应的超时时间
proxy_read_timeout 90;

# 连接后端服务器的超时时间,如果后端服务器在该时间内没有发送数据,则取消代理请求
proxy_send_timeout 90;

# 缓存代理请求的body数据的时间
proxy_buffering on;

# 以下是文件扩展名的过滤,你可以根据需要启用或禁用
if ($request_filename ~* \.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$) {
    # 如果请求是文件下载,可以在这里设置特定的处理,例如:
    # proxy_pass 空字符串或其他配置;
    # expires 30d; # 设置文件缓存时间
    # break; # 停止执行后续的指令
}

}

大部分访问为了安全性 都是考虑限制了 跨域请求。
所有要设置好。

前端伪静态配置

主项目前端

location / {
try_files $uri $uri/ /index.html;
}

大屏前端

location /DataV {
try_files $uri $uri/ /DataV/index.html;
}

设置上传文件的大小

client_max_body_size 100m;

添加头部信息

proxy_set_header Cookie $http_cookie;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

请求头总长度大于128k时使用large_client_header_buffers设置的缓存区

client_header_buffer_size 128k;

指令参数4为个数,128k为大小,默认是8k。申请4个128k。

large_client_header_buffers 4 128k;

指定允许跨域的方法,*代表所有

add_header Access-Control-Allow-Methods 'GET,PUT,POST,DELETE,OPTIONS';

预检命令的缓存,如果不缓存每次会发送两次请求

add_header Access-Control-Max-Age 3600;

带cookie请求需要加上这个字段,并设置为true

add_header Access-Control-Allow-Credentials true;

表示允许这个域跨域调用(客户端发送请求的域名和端口)

$http_origin动态获取请求客户端请求的域 不用的原因是带cookie的请求不支持

add_header Access-Control-Allow-Origin $http_origin;

表示请求头的字段 动态获取

add_header Access-Control-Allow-Headers $http_access_control_request_headers;

后端接口(按实际情况修改端口)

api

location /api/ {
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Headers *;

允许的方法

add_header Access-Control-Allow-Methods 'GET,POST,OPTIONS';
proxy_pass http://localhost:5000;
if ($request_filename ~* ^.*?.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$){ }
}

websocket

location /websocket {
proxy_pass http://localhost:5000/api/message/websocket;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 600s;
}

报表设计接口配置(按实际情况修改端口)

location /ReportServer/ {
proxy_pass http://localhost:30007/;
}

文件预览服务

location /FileServer {
proxy_pass http://localhost:30090;
}

解决文件预览服务无法加载js,css问题

location ~ /FileServer/..(js|css)?$ {
proxy_pass http://localhost:30090;
}

posted on 2024-05-21 17:46  刹那的菜鸟  阅读(12)  评论(0编辑  收藏  举报