可从Flask服务器访问的多个后端服务器

时间:2013-12-07 15:48:46

标签: python web nginx flask

我希望有一个前端服务器,我的客户端可以连接,并根据客户端,被重定向(透明地)到另一个Flask应用程序,该应用程序将处理特定的客户端需求(例如,可以有不同的应用程序)。我还希望能够随时添加/删除/重启这些后端客户端而不会杀死其他客户端的主服务器。

我希望客户:   - 未检测到后端中有其他服务器(URL应该是同一主机)   - 重定向到其他进程时不必重新输入凭据

最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

您描述的前端服务器基本上就是所谓的reverse proxy

反向代理接收来自客户端的请求,并将其转发到客户端无法直接访问的第二行内部服务器。通常,根据请求URL的某些方面决定将请求转发到哪个内部服务器。例如,您可以为每个内部应用程序分配不同的子域。

反向代理收到内部服务器的响应后,会将其转发给客户端,就好像它是自己的响应一样。内部服务器的存在不会透露给客户端。

只要所有内部服务器共享相同的身份验证机制和用户数据库,解决身份验证就很简单。每个请求都将附带身份验证信息。例如,这可以是由登录请求,直接用户凭证或某种类型的认证令牌设置的会话cookie。在所有情况下,您都可以在所有应用程序中以相同的方式验证登录。

Nginx是一种流行的Web服务器,可以很好地用作反向代理。

答案 1 :(得分:0)

听起来您想要一个具有单个入口点的服务端点集合的单点登录设置。

我会考虑将我的所有服务部署为Flask应用程序,而不了解它们是如何构建的。他们所知道的是,所有资源请求都需要某种与之相关的凭证。您传递这些凭据的方式可能会有所不同。您可以使用FAS Flask Auth Plugin之类的东西来处理身份验证。或者,您可以执行更简单的操作,例如将后续请求的HTTP标头中提供的凭据打包到其他服务。后续服务中的Flask.request.headers将允许您访问正确的标头以传递给您的身份验证服务。

在细节问题上,有很多方法可以解决,但我认为这种通用架构适合您。

相关问题