当前位置: 首页 > news >正文

nginx中间代理。前端下载资源跨域,太大不想放到服务端处理。

一、检测:nginx 是否支持lua

nginx -V | grep lua

二、nginx的配置

location /proxy/ { resolver 8.8.8.8 114.114.114.114 valid=300s; resolver_timeout 10s; # 1. 用 Lua 解码 URL 参数 set_by_lua_block $target_url { local url = ngx.var.arg_url if not url or url == "" then return "" end -- 解码 URL(处理 %3A %2F 等) local decoded = ngx.unescape_uri(url) -- 验证是否是合法 URL if not decoded:match("^https?://") then return "" end return decoded } # 2. 参数验证 if ($target_url = "") { return 400 '{"error":"Missing or invalid url parameter"}'; } # 3. 可选:白名单限制(建议开启) if ($target_url !~ ^https?://([a-zA-Z0-9_-]+\.)*coze\.cn(/|$)) { return 403 '{"error":"Domain not allowed"}'; } # 4. 清除可能干扰的请求头 proxy_set_header Origin ""; proxy_set_header Referer ""; # 5. 模拟真实浏览器请求 proxy_set_header User-Agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"; proxy_set_header Accept "*/*"; proxy_set_header Accept-Language "zh-CN,zh;q=0.9,en;q=0.8"; # 6. 核心代理 proxy_pass $target_url; proxy_redirect off; proxy_set_header Host $proxy_host; # 7. SSL 配置 proxy_ssl_server_name on; proxy_ssl_protocols TLSv1.2 TLSv1.3; proxy_ssl_verify off; # 8. 视频流优化:关闭缓冲 proxy_buffering off; proxy_request_buffering off; # 9. 不强制下载(让浏览器根据 Content-Type 处理) # proxy_hide_header Content-Disposition; # add_header Content-Disposition "attachment" always; # 10. CORS 头 add_header Access-Control-Allow-Origin "*" always; add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always; add_header Access-Control-Allow-Headers "*" always; add_header Access-Control-Expose-Headers "Content-Disposition, Content-Length" always; # 11. 预检请求 if ($request_method = 'OPTIONS') { return 204; } # 12. 超时设置 proxy_connect_timeout 30s; proxy_send_timeout 30s; proxy_read_timeout 60s; }

三、vue示例

// 代理请求工具函数 function proxyFetch(targetUrl) { // 必须编码,否则 & 和 = 会被当作查询参数解析 const encodedUrl = encodeURIComponent(targetUrl); return fetch(`/proxy/?url=${encodedUrl}`, { method: 'GET' }); } // 使用示例 async function loadVideo(videoUrl) { try { const response = await proxyFetch(videoUrl); if (!response.ok) { throw new Error(`HTTP ${response.status}`); } const blob = await response.blob(); const objectUrl = URL.createObjectURL(blob); const video = document.querySelector('video'); video.src = objectUrl; } catch (error) { console.error('Failed:', error); } } // 调用 const cozeVideoUrl = 'https://lf6-bot-platform-tos-sign.coze.cn/bot-studio-bot-platform/bot_files/3850925219778179/video/quicktime/7641920355644571682/7e9889f1-8059-4846-bbc1-2f1fea5ad040.mp4?x-expires=1779878095&x-signature=5mgX3n%2BmKwjzWIEP%2Ffm8xTODlZQ%3D'; loadVideo(cozeVideoUrl);
http://www.jsqmd.com/news/873253/

相关文章:

  • 核心优势驱动:Centric PLM如何破解跨境电商多市场协同难题
  • 用 MapleSim 卷绕和卷材加工仿真库加速智能制造与电池产线优化
  • 没有外机位也能装?厨房空调水冷方案全解:从散热原理到冷凝水回收 - 奔跑123
  • 抖音视频怎么提取无水印版本?2026年抖音无水印视频提取工具推荐 - 科技大爆炸
  • AI Agent写作如何重构内容生产力:3个已被验证的行业增效模型及ROI测算公式
  • 微电网协调控制柜 vs 传统配电柜:本质差异与代际跨越
  • 终极Scribd电子书下载指南:3步打造个人离线图书馆
  • 从“各卖各的”到“一盘棋”——服装老板用了怎样的ERP+分销系统
  • 2026年郑州企业做GEO优化怎样选择服务商?本地靠谱机构盘点解析 - 哈喽33
  • 2026年一键生成论文工具实测报告:5款神器从文献到降重一站式避坑指南
  • AIGC 内容安全检测服务精选公司:天磊卫士(深圳)科技有限公司
  • 这不是一个浪漫古士
  • RDPWrap完整指南:免费解锁Windows多用户远程桌面实用教程
  • 数据说话:驱动芯片的关键性能指标与设计挑战
  • 生产环境的“后悔药”:如何利用 Dify 版本控制与回滚机制建立 AI 应用的 CI/CD 闭环?
  • 豆包获客讲师:深度专业评估与独家解析
  • 保险领域OCR选型指南:楚识科技让理赔从7天缩至1小时,识别率高达99.6%
  • 突破性升级:Windows Package Manager 1.8让软件管理效率提升300%
  • AI搜索时代品牌可见度提升:GEO优化与大模型优先推荐机制解析
  • GalTransl:面向视觉小说的AI驱动翻译系统架构解析
  • Taotoken 的 API Key 权限管理与审计日志功能在安全开发中的价值
  • 从频繁处理超时到稳定响应谈谈我使用Taotoken路由能力后的改变
  • 可酷实现 AI 智能音乐关键技术突破,推动音乐行业迈入智能化新阶段
  • 中小企业软件开发避坑指南:资深团队总结实战经验
  • 别错过机会!2026亲测好用的AI论文软件|避坑版
  • 西恩士液冷板清洁度全自动显微镜分析:AI驱动的高通量检测革命 - 工业设备研究社
  • 清除缓存,释放C盘
  • 【广东专升本】2026广东专升本真题PDF+备考资料汇总|政治英语+专业基础课+专业综合课+模拟卷
  • 多家企业验证:这款AI招聘系统回购率最高
  • 合规对标·低误报漏报·稳定运行——知源-AI数据分类分级系统金融行业解决方案