我正在Debian 6上使用Django + PostrgreSQL + Nginx构建一个应用程序。这个应用程序有两个独立的组件,以后会在不同的机器上。
组件A使用REST从组件B调用一个函数。它存储的敏感数据应由组件A只读,但可由组件B写入。
组件B将敏感数据写入组件A,并通过其API接收数据
我想要分离这些组件,这样Comp B的暴露就不会导致Comp A中的敏感数据暴露,为了这样做,我正在考虑在不同的linux用户下运行两个nginx实例。然后运行组件B的用户无法看到Comp A的settings.py,这将向A的数据库公开登录凭据和存储数据的加密密钥。
我的问题是,如何设置nginx来运行两个实例,每个实例在自己的用户帐户下?如果可能的话,我希望只使用标准Debian存储库中可用的包,以免丢失自动升级。
发布于 2012-08-23 18:52:58
在我看来,您实际上并不需要2个nginx实例来获得所需的分隔。
您有三个交互代理: nginx、app1和app2。在这个场景中,nginx实际上并不直接处理数据,它只是将传入的http请求路由到app1或app2,因此实际上没有任何数据要泄漏。
在我看来,你真正想要的是让2 django应用程序以不同的用户运行,设置权限,这样app1就不能获得app 2's的数据(除了通过rest-api)。
您没有指定nginx如何与应用程序对话,而是指定任何和所有常见的机制( proxying、反向代理、scgi、.)。让每个应用程序都有一个独立的进程变得相当容易。
在nginx端,只要有两个服务器块,每个服务器块都有自己的子域/域名,就可以获得干净的分隔。
对于更多的想法,您可以向组件config配置中添加一些http://nginx.org/en/docs/http/ngx_http_推荐人_module.html#valid_推荐人指令,以确保它只接受指定的REST的外部/组件引用。
发布于 2012-08-27 08:29:56
我发现一个很好的方向是使用快基并启动Comp B,如下所示:
sudo -u youruser manage.py runfcgihttps://serverfault.com/questions/420329
复制相似问题