2015-01-13 18 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

謝謝!是的,我們傾向於兩個獨立的應用程序,但最好是做這樣的事情。我打算再做一些研究,但再次感謝! –

相關問題