2017-04-27 69 views
0

我在rails應用程序上運行彈性beanstalk上有一個紅寶石,我想上傳一些大文件 - 可能大約5GB。 要做到這一點,我就.ebextensios增加一個配置文件/ nginx的/ 01_upload_file_size.config具有以下內容:Elastic beanstalk重置.config文件

files: "/etc/nginx/conf.d/proxy.conf" : mode: "000755" owner: root group: root content: | client_max_body_size 20G;

當我部署代碼EB,我用命令sudo service nginx reload重啓nginx的服務器。這似乎工作了一段時間。

第二天上傳大文件會給我'連接重置'錯誤。日誌文件log/nginx/error.logs告訴我錯誤客戶端打算髮送太大的身體:24084848字節

我不知道爲什麼會發生這種情況。似乎配置文件在短期內被忽略或者可能被重置,但在文檔中我看不到任何這種情況的參考。請注意,當我再次進入eb環境並再次重新啓動nginx時,我可以毫無問題地上傳大文件。


照顧好一切後,我在我的EB控制檯上看到了這些事件。

將實例[i-076127f714faac566]添加到您的環境中。

從您的環境中刪除實例[i-0c51791325b54873c]。

我還注意到,當配置重置時,主機的IP地址發生變化。

我認爲,當實例被自動添加並從EB中刪除時,它不會應用配置文件,也不會像我通過SSH手動重新啓動nginx服務器。

所以問題是:如何確保client_max_body_type始終設置爲20G,即使在刪除實例並重新添加之後?或者,如何使配置持久化,以便我不必手動重新啓動nginx服務器?

回答

0

我想你在這裏有兩個問題 - 爲什麼EB取代你的實例,以及如何自動重啓nginx。

回答第一個問題需要您的一些研究,但我懷疑它可能是默認的CloudWatch警報,當網絡流量降到某個閾值以下時,它會殺死實例。

第二個問題應該相當簡單;繼documentation,你應該能夠部分添加到01_upload_file_size.config自動部署過程nginx的重新啓動:

container_commands: 
    01_restart_nginx: 
    command: "service nginx reload" 

我還要檢查,以確保實際上正在創建的/etc/nginx/conf.d/proxy.conf文件 - 我不知道知道是否支持.ebextensions以下的文件夾。您可能需要將您的配置文件移動到.ebextensions/01_upload_file_size.config

+0

感謝您的回答。我有一個自動擴展環境,所以根據服務器負載自動添加/刪除實例。我在日誌中找到了一些cloudwatch的痕跡,所以我會深入研究它。目前,我已經刪除了自動縮放,並暫時避免了這個問題。 – Himsim

+0

很高興聽到它!有一個默認的自動縮放規則,如果其網絡流量低於某個閾值(這在低流量站點上經常出現這種情況),將終止該實例。 – Brian