2016-02-12 81 views
1

我在ec2服務器上託管了一個nodejs應用程序。目前我使用nginx代理應用程序並從同一臺機器提供靜態文件。nginx提供來自另一臺服務器的靜態文件

出於安全原因,我正在實施另一臺服務器,它將僅用作代理服務器,主應用程序將坐在另一個實例上,並且只有一個內部IP地址。

代理所述請求到內部實例很容易,但我想不出我如何能成爲位於另一臺服務器上靜態文件...

location ~ ^/(images/|img/|javascript/|js/|css/|stylesheets/|flash/|med$ 
     root /usr/src/www/static; 
     access_log off; 
     expires 24h; 
    } 

是否有可能做這樣的事情?

 location ~ ^/(images/|img/|javascript/|js/|css/|stylesheets/|flash/|med$ 
     root http://172.10.10.10/static; 
     access_log off; 
     expires 24h; 
    } 

如果是的話,我應該實現對應用程序的另一個nginx的服務器來提供文件服務,並從簡單的新服務器代理?

回答

0

在nginx的上下文中,靜態文件總是需要在本地文件系統上。所以你需要對'app機器進行proxy_pass。你可能只想把應用放在nginx後面的第二臺服務器上,所以你的'代理'機器只做一個proxy_pass,它不需要知道或關心什麼是靜態的,什麼不是(除非你有安全原因需要在頂級代理中分離它們)。

這有一個額外的好處,您可以輕鬆地添加更多的服務器在您的應用層和負載平衡,除了將您的靜態proxy_pass轉換爲上游(或使用「下一個服務器」)之外,不需要更改代理級別。

相關問題