我的客户端-服务器应用程序主要基于特殊用途的 http 服务器,它以类似 Ajax 的方式与客户端通信,即。客户端 GUI 在异步 http 请求/响应周期时刷新。
专用http服务器的进化能力是有限的,随着应用程序的增长,需要越来越多的标准功能,例如Django提供的。
因此,我想添加一个 Django 应用程序作为外观/反向代理,以便隐藏非标准的专用服务器并能够从 Django 中获益。出于安全原因和隐藏复杂性,我希望将 Django 应用程序作为网关而不使用 http-redirect。
但是,我担心的是通过服务器上的 Django 隧道传输流量可能会破坏性能。这是一个合理的担忧吗?
是否有其他解决方案来解决这个问题?
最佳答案
通常在生产中,您将 Django 托管在 Apache httpd 或 nginx 等 Web 容器后面。这些具有专为代理请求而设计的模块(例如,proxy_pass
用于 nginx 中的 location
)。如果需要,它们会为您提供一些开箱即用的功能,例如缓存。与通过 Django 应用程序的请求管道进行代理相比,这可以节省您的开发时间,同时提供更好的性能。但是,当您使用这样的解决方案时,您牺牲了完全操纵请求或代理响应的能力。
为了使用 ./manage.py runserver
进行本地测试,我通过 urls.py
在 if settings.DEBUG: ...
部分。这是我使用的 View 函数代码,它使用 requests Python 库支持 GET、PUT 和 POST:https://gist.github.com/JustinTArthur/5710254
关于Django 作为反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5226173/