2017-04-27 1 views
0

Ich habe eine Ruby on Rails App, die auf elastischen Bohnenstangen läuft und ich wollte einige große Dateien hochladen - möglicherweise um 5GB. Um dies zu tun, habe ich eine Konfigurationsdatei auf .ebextensios/nginx/01_upload_file_size.config mit folgendem Inhalt:Elastische Bohnenstange setzt .config Datei zurück

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

Nachdem ich den Code EB bereitstellen, ich starten Sie den nginx-Server mit dem Befehl sudo service nginx reload . Dies scheint für eine Weile zu funktionieren.

Das Hochladen großer Dateien am nächsten Tag gibt mir den Fehler "Verbindung wird zurückgesetzt". Die Protokolldatei log/nginx/error.logs sagt mir Fehler Client soll zu großen Körper senden: 24084848 Bytes

Ich habe keine Ahnung, warum dies auftritt. Es scheint so, als würde die Konfigurationsdatei nach einer kurzen Zeit ignoriert oder vielleicht zurückgesetzt, aber ich sehe keine Referenz in der Dokumentation. Beachten Sie, dass ich große Dateien problemlos hochladen kann, wenn ich erneut in die eb Umgebung surfe und nginx neu starte.


Nachdem ich mich um alles gekümmert hatte, sah ich diese Ereignisse auf meiner EB-Konsole.

Instanz [i-076127f714faac566] zu Ihrer Umgebung hinzugefügt.

Instanz [i-0c51791325b54873c] aus Ihrer Umgebung entfernt.

Ich merke auch, dass die IP-Adresse des Hosts ändert, wenn die Konfiguration zurückgesetzt wird.

Ich denke, dass, wenn die Instanzen automatisch hinzugefügt und aus EB entfernt wurden, es nicht die Konfigurationsdatei anwendete oder den Nginx-Server nicht wie ich manuell über SSH neu startete.

Die Frage ist also: Wie stelle ich sicher, dass der client_max_body_type immer auf 20G eingestellt ist, auch nachdem die Instanz entfernt und neu hinzugefügt wurde? Oder wie man die Konfiguration persistent macht, damit ich den nginx Server nicht manuell neu starten muss?

Antwort

0

Ich denke, Sie haben zwei Fragen hier - warum ersetzt EB Ihre Instanz, und wie können Sie den Neustart von Nginx automatisieren.

Die Beantwortung der ersten Frage erfordert ein wenig Nachforschung von Ihnen, aber ich vermute, dass es der standardmäßige CloudWatch-Alarm ist, der Instanzen abstürzt, wenn der Netzwerkverkehr unter einen bestimmten Schwellenwert fällt.

Die zweite Frage sollte ziemlich einfach sein; im Anschluss an den documentation, sollten Sie einen Abschnitt zu 01_upload_file_size.config hinzufügen können, die automatisch nginx während des Bereitstellungsprozesses startet:

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

Ich würde überprüfen, um auch sicherstellen, dass die /etc/nginx/conf.d/proxy.conf Datei tatsächlich erstellt wird - ich weiß nicht wissen, ob Ordner unter .ebextensions unterstützt werden. Möglicherweise müssen Sie Ihre Konfigurationsdatei auf .ebextensions/01_upload_file_size.config verschieben.

+0

Danke für die Antwort. Ich verfüge über eine automatische Skalierungsumgebung, sodass die Instanzen abhängig von der Serverlast automatisch hinzugefügt/entfernt werden. Ich habe einige Spuren von Cloudwatch auf den Baumstämmen gefunden, also werde ich tief in das Thema eindringen. Im Moment habe ich die automatische Skalierung entfernt und das Problem vorübergehend etwas vermieden. – Himsim

+0

Freut mich zu hören! Es gibt eine Standard-Autoscaling-Regel, die eine Instanz beendet, wenn der Netzwerkverkehr unter einen bestimmten Schwellenwert fällt, was bei Websites mit wenig Verkehr häufig vorkommt. – Brian

Verwandte Themen