首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django/Python将URL中的文件作为http代理快速流提供

Django/Python将URL中的文件作为http代理快速流提供
EN

Stack Overflow用户
提问于 2012-11-08 01:18:47
回答 2查看 1.4K关注 0票数 2

我们遇到了由CDN (内容分发网络)提供的SVG文件的跨域问题,因此这些文件来自与我们的主域不同的域名,即Python/Django应用程序。我们想要设置一个特殊的视图,它可以作为这些SVG文件的服务器端代理,以屏蔽域名并绕过跨域问题。问题是如何对静态文件(如SVG或其他类型的文件(.jpg、.js、.png、.mp4等))的url发出快速http请求。并且一旦我们从请求流接收到组块就在组块的流式http响应中为它们提供服务。

我们意识到在Django和WSGI之外做这件事可能会更快,也许twisted server会更好,所以最终我们正在寻找最快/最好的Python方法来完成我们需要的东西。真的在寻找推荐解决方案的示例代码。

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-08 15:36:13

你可以把nginx放在Apache的前面,它会有很多好处,比如更好的静态文件服务(让它来处理静态文件,而不是Apache),以及将Apache/mod_wsgi与慢客户端隔离。这样做之后,您可以让Django应用程序生成X-Accel-Redirect标头,nginx将解释这些标头并发出新的sub请求。该子请求的目标URL可以是在nginx中设置的代理定义,用于从CDN获取文件并返回它们,就像它们是对原始请求的响应一样。

票数 2
EN

Stack Overflow用户

发布于 2012-11-08 15:28:22

所以我有几个可能的解决方案。第一个是python,但这可能不是您的最佳选择。

1)在twisted.web.proxy中使用reverse proxy server扭曲船舶。这里有一个非常简单(但很有效)的on their site示例

2)根据您的应用(如现代浏览器),在您的CDN配置中添加CORS响应头可能适合您。为了检查,您的应用程序(浏览器?)尝试对SVG资源发出GET请求(带有"Origin:“http标头),但随后拒绝呈现它?

如果是这样的话,您可能会忽略浏览器的同源需求。源可以通过返回Cross-Domain-Allow-Origin: *或类似的标头以及对带有Origin:标头的HTTP请求的响应来放宽这一要求。

根据CDN,我可能会澄清/提供示例元数据,以启用跨域请求的CORS响应头

3)一定要用python做反向代理吗?apachenginx都有经过良好测试的模块,可以在不使用Python的情况下实现流式反向代理。尝试用python做这件事可能很有趣和/或令人钦佩,但它不会像直接在HTTP服务器中那样扩展到相同的性能级别

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13274816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档