Django 作为反向代理

标签 django http client-server reverse-proxy

我的客户端-服务器应用程序主要基于特殊用途的 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.pyif settings.DEBUG: ... 部分。这是我使用的 View 函数代码,它使用 requests Python 库支持 GET、PUT 和 POST:https://gist.github.com/JustinTArthur/5710254

关于Django 作为反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5226173/

相关文章:

http - 可以加密通过 IIS 上的 HTTP 的身份验证(没有 SSL)吗?

ios - Error Domain=NSURLErrorDomain Code=-1004 而不是 Swift 服务调用中的 -1009

c - 如何在 C 中给客户端特定的 ip 地址

java - Erlang - 发出 ssl :send(Socket, 数据时未收到数据)

networking - TCP 是在每个数据包上发送 SYN/ACK 还是仅在第一个连接上发送?

python - 覆盖率测试 django 注销

Django REST分页相对URL而不是ListAPIView中的绝对URL

asp.net - 将ASP移植到Django或ASP.NET

http - 如何使用 HTTPie 发送 POST 请求?

python - 值错误 : Missing staticfiles manifest entry for 'favicon.ico'