Wie zu konfigurieren ist .ebextensions für nginx location-Direktive?
Möchte ich bei der Konfiguration der stagingumgebung in Elastic Beanstalk immer disallow alle Spinnen. Die nginx-Direktive würde wie folgt Aussehen:
location /robots.txt {
return 200 "User-agent: *\nDisallow: /";
}
Verstehe ich, dass ich möchte eine Datei erstellen unter die .ebextensions/Ordner, wie 01_nginx.config, aber ich bin mir nicht sicher, wie die Struktur des YAML-innen ist es so, dass es funktionieren würde. Mein Ziel ist diese location-Direktive mit der vorhandenen Konfiguration nicht vollständig ersetzen alle vorhandenen Konfigurations-Dateien, die vorhanden sind.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wollte ich das gleiche tun. Nach viel Graben, fand ich 2 Möglichkeiten, es zu tun:
Option 1. Verwenden Sie ein ebextension zu ersetzen, der nginx-Konfiguration-Datei mit Ihrer benutzerdefinierten Konfiguration
Habe ich diese option, da es die einfachste.
Folgenden das Beispiel von Amazon in Mit AWS Elastic Beanstalk Node.js Plattform - Konfiguration der Proxy - Server- Beispiel .ebextensions/proxy.config, können wir sehen, dass Sie einen ebextension, das eine Datei erstellt namens /etc/nginx/conf.d/proxy.conf. Diese Datei enthält den gleichen Inhalt wie die original-nginx-Konfiguration-Datei. Dann löschen Sie das original der nginx-Konfiguration-Datei mit container_commands.
Ersetzen Sie das Beispiel Amazon mit dem Inhalt Ihrer aktuellen nginx-Konfiguration-Datei. Beachten Sie, dass die nginx-Konfigurationsdateien werden gelöscht, die containter-Befehl aktualisiert werden müssen, zu. Diejenigen, die ich benutzt habe sind:
Daher die endgültige ebextension, die für mich gearbeitet ist wie folgt:
/.ebextensions/nginx_custom.config
Sobald Sie bereitstellen, dies zu ändern, müssen Sie zum laden des nginx Servers. Sie können eine Verbindung zu Ihrem server mit eb ssh-Ihrer-Umwelt-Namen und führen Sie dann sudo service nginx reload
Option 2. Verwenden Sie ein ebextension zum ändern der nginx-Konfiguration-Datei-generator, so dass es enthält Ihre benutzerdefinierten Standorte im Finale der nginx-Konfiguration-Datei
Die zweite option basiert auf diesem post: jabbermarky Antwort in Amazon Foren
Er erklärt diese Methode sehr gut in seiner Antwort, also habe ich Sie ermutigen, es zu Lesen, wenn Sie wollen, um es zu implementieren. Wenn Sie implementieren diese Antwort, die Sie aktualisieren müssen Sie den Speicherort der Datei nginx-Konfiguration generator.
Beachten Sie, dass habe ich nicht getestet, diese option.
Zusammenfassend, er fügt hinzu, ein shell-Skript ausgeführt werden, bevor der nginx-Konfiguration-Datei generiert. In diesem shell-Skript, er ändert die nginx-Konfiguration-Datei-generator, um den server-block-Standorte will er im erzeugten nginx-Konfiguration-Datei. Schließlich, fügt er hinzu, die eine Datei mit den Standorten will er in den server-block der Letzte der nginx-Konfiguration-Datei.
Scheint es, dass die genannten Ansätze funktionieren nicht mehr. Der neue Ansatz ist, um nginx .conf Dateien in einen Unterordner .ebextensions:
Quelle
Dies nicht erfordern einen Neustart von nginx entweder als Elastic Beanstalk wird sich darum kümmern.
Mmmmm!
.ebextensions
!Sind Sie wahrscheinlich das am einfachsten Weg erstellen Sie ein shell-Skript zum ändern Ihrer Konfiguration aus, und dann läuft das. Weiß nicht wirklich, nginx, sondern versuchen, etwas entlang der Linien von:
I. e. zuerst erstellen Sie ein schell-script, das das tut, was Sie brauchen, dann läuft es.
Oh, und vorsichtig sein, es sind keine tabs in Ihrem YAML! Nur Leerzeichen sind erlaubt... Überprüfen Sie die log-Datei
/var/log/cfn_init.log
für Fehler...Glück!
Dies ist erreichbar mit .ebextension config-Dateien, aber ich habe Schwierigkeiten treten nginx neu starten nach änderung der Konfigurationsdateien.
Nun, ich habe getan, ähnlich wie hinzufügen, um eine Datei zu kicken nginx Reifen, aber für einige ungerade Grund, warum es nicht ausgeführt: