簡體   English   中英

Django / Python將URL中的文件作為http代理快速流提供

[英]Django/Python serve files from URL as http proxy fast stream

我們對從CDN(內容傳送網絡)提供的SVG文件存在跨域問題,因此來自與我們的主域(即Python / Django應用程序)不同的域名。 我們想設置一個特殊的視圖,可以作為這些SVG文件的服務器端代理來掩蓋域名並解決跨域問題。 問題是如何對SVG等靜態文件或其他類型(.jpg,.js,.png,.mp4等)的URL進行快速http請求,並在分塊流式http響應中盡快為它們提供服務我們從請求流中收到塊。

我們意識到在Django和WSGI之外做這個可能會更快,也許扭曲的服務器會更好,所以最終我們正在尋找最快/最好的Python方法來完成我們需要的東西。 真的在尋找推薦解決方案的示例代碼。

非常感謝!

您可以將nginx放在Apache之前,這將帶來各種好處,例如更好的靜態文件服務(IOW讓它處理靜態文件而不是Apache)並將Apache / mod_wsgi與慢速客戶端隔離。 完成后,您可以讓您的Django應用程序生成X-Accel-Redirect標頭,nginx將解釋這些標頭並發出新的子請求。 該子請求的目標URL可以是nginx中的代理定義設置,以從CDN獲取文件並返回它們,就像它們響應原始請求一樣。

所以我有幾個可能的解決方案。 第一個是python,但這可能不是你最好的選擇。

1)在twisted.web.proxy使用反向代理服務器的 Twisted ship。 在他們的網站上有一個非常簡單(但有效)的例子

2)根據應用程序(例如,現代瀏覽器),在CDN配置中添加CORS響應標頭可能對您有用。 要檢查,您的應用程序(瀏覽器?)是否嘗試對SVG資源發出GET請求(帶有“Origin:”http標頭),但是然后拒絕呈現它?

如果是這樣,您可能會絆倒瀏覽器的同源要求。 源可以通過返回Cross-Domain-Allow-Origin: *或類似的頭以及對具有Origin:頭的HTTP請求的響應來放寬此要求。

根據CDN,我可以澄清/提供示例元數據,以便為跨源請求啟用CORS響應頭

3)你絕對需要使用python作為反向代理嗎? apachenginx都有非常好的測試模塊,用於在不使用Python的情況下實現流反向代理。 嘗試使用python執行此操作可能很有趣和/或令人欽佩,但它不會像在HTTP服務器中直接執行相同的性能級別那樣擴展

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM