2015-01-13 19 views
0

我目前正在开发一个将部署在大型企业内部网络上的rails项目。它仅供内部使用。然而,这个项目的一个特性要求是,外部非用户可以收到一封带有url/token的电子邮件,这些邮件将它们带到一个表单中,以便从网络外部向应用程序的数据库提供信息。解决这个问题最好的方法是什么,或者甚至有可能?在内部网络上运行rails应用程序并可访问外部窗体?

回答

0

如果您希望自己的应用只能在内部使用,您应该在具有外部可见性的同一网络中创建另一个应用,并且您可以通过API与两者之间的内部应用进行通信。

希望这给你一些想法。

+0

是的,我们在扶着这个方向,尽管将它保存为一个应用程序会很好。你对纳森的方法有什么想法? –

+0

是的,这也是一个很好的解决方案,但在我看来,我虽然想从外部请求中获得0访问权限。也许出于安全目的,你不希望在该服务器上有任何外部流量,如果情况并非如此,Nathan的解决方案甚至比我的解决方案更好,更紧密。 –

+0

实际上,在这种情况下可能需要0次访问。我认为我们可以做的是将外部部分作为独立应用程序托管在dmz中,然后通过防火墙中的一个孔连接到内部应用程序数据库。 –

0

应该可以从Rails项目中限制对任何给定路由或控制器操作的访问(机架请求对象包含生成请求的IP),但更好的方法是利用反向代理中的功能。如果您使用的是nginx,请参阅this page。您应该能够设置的东西像这样在你的nginx.conf:

location/{ 
    allow 192.168.1.1/24; # or whatever IP range you want to permit through 
    allow 127.0.0.1;  # for local development 
    deny all;    # block everyone else 
    ... # the reset of your app config 
} 

location /path-to-external-form { 
    allow all; 
} 

当然,这可能是更容易站起来,一个单独的应用程序,只是共享一个数据库

+0

谢谢!是的,我们倾向于两个独立的应用程序,但最好是做这样的事情。我打算再做一些研究,但再次感谢! –

相关问题