So verwenden Sie Umgebungsvariablen in der Nginx-Konfigurationsdatei

So verwenden Sie Umgebungsvariablen in der Nginx-Konfigurationsdatei

Vorwort

Nginx ist ein auf Leistung ausgelegter HTTP-Server. Im Vergleich zu Apache und lighttpd bietet er die Vorteile eines geringeren Speicherverbrauchs und einer höheren Stabilität.

Da wir jetzt Nginx-Docker bereitstellen müssen, hoffen wir, dass der Servername in der Nginx-Konfigurationsdatei vor dem Starten des Containers dynamisch geändert werden kann.
Die Nginx-Konfigurationsdatei unterstützt jedoch nicht die Verwendung von Umgebungsvariablen. Ich habe online viele Lösungen gefunden und mich schließlich entschieden, envsubst zu verwenden, um die Nginx-Konfigurationsdatei neu zu schreiben.

So funktioniert es

Nginx besteht aus einem Kernel und Modulen. Der Kernel ist sehr klein und prägnant und seine Arbeit ist auch sehr einfach. Er ordnet Clientanforderungen lediglich einem Standortblock zu (Standort ist eine Anweisung in der Nginx-Konfiguration für die URL-Übereinstimmung), indem er die Konfigurationsdatei nachschlägt. Jede an diesem Standort konfigurierte Anweisung startet unterschiedliche Module, um die entsprechende Arbeit abzuschließen.

Nginx-Module sind strukturell in Kernmodule, Basismodule und Drittanbietermodule unterteilt:

Kernmodule: HTTP-Modul, EVENT-Modul und MAIL-Modul Basismodule: HTTP-Access-Modul, HTTP-FastCGI-Modul, HTTP-Proxy-Modul und HTTP-Rewrite-Modul,
Module von Drittanbietern: HTTP Upstream Request Hash-Modul, Notice-Modul und HTTP Access Key-Modul.

Erfahren Sie mehr über envsubst

envsubst ersetzt die Umgebungsvariablen durch die Werte der angegebenen Tags in der Datei.
Beispielsweise gibt es eine Datei env.conf mit folgendem Inhalt:

[prüfen]
ip = ${ip}
Port = ${Port}
URL = http://${ip}:${port}/index.html
Telefon = ${Telefon}

Beim Ausführen export ip=192.168.1.5 , export port=8081 , export phone=13522223334 werden die Umgebungsvariablen geschrieben.
Führen Sie dann envsubst < env.conf > env.new.conf aus, um die folgende env.new.conf zu generieren

[prüfen]
IP = 192.168.1.5
Port = 8081
URL = http://192.168.1.5:8081/index.html
Telefon = 13522223334

Sie können auch angeben, dass nur einige Umgebungsvariablen ersetzt werden sollen, source env.env && envsubst '$ip;$phone' < env.conf , wodurch nur die beiden Variablen „ip“ und „phone“ ersetzt werden.
Das Obige ersetzt nur einen Teil der Umgebungsvariablen. Beim Testen unter Linux können nur einfache Anführungszeichen verwendet werden. Doppelte Anführungszeichen sind ungültig. Ich habe die Trennzeichen , . ; | ausprobiert und diese vier sind alle in Ordnung. Ich vermute, es gibt noch mehr Trennzeichen.

Nginx-Konfigurationsdatei anwenden

docker-compose.yml sieht wie folgt aus

Version: "3"
 
Leistungen:
  nginx:
    Bild: nginx:1.20.1-alpine
    Containername: nginx
    Häfen:
      - 80:80
      -443:443
    Umfeld:
      - NGINX_HOST=www.janbar.com
      – NGINX_PORT=80
    Bände:
      – /root/janbar.temp:/etc/nginx/conf.d/janbar.temp
    Befehl: /bin/sh -c "envsubst < /etc/nginx/conf.d/janbar.temp > /etc/nginx/conf.d/default.conf und exec nginx -g 'Daemon off;'"
    Netzwerkmodus: Bridge
    Neustart: immer

Der Inhalt der Datei /root/janbar.temp ist wie folgt

Server {
    hören Sie ${NGINX_PORT};
    hören Sie [::]:${NGINX_PORT};
    Servername ${NGINX_HOST};

    Standort / {
        root /usr/share/nginx/html;
        Index Index.html Index.htm;
    }

    Fehlerseite 500 502 503 504 /50x.html;
    Standort = /50x.html {
        root /usr/share/nginx/html;
    }
}

Gemäß der obigen Konfigurationsdatei docker-compose.yml wird die Konfigurationsdatei im Docker-Container schließlich wie folgt generiert: cat /etc/nginx/conf.d/default.conf

Server {
    hören Sie 80;
    hören [::]:80;
    Servername www.janbar.com;

    Standort / {
        root /usr/share/nginx/html;
        Index Index.html Index.htm;
    }

    Fehlerseite 500 502 503 504 /50x.html;
    Standort = /50x.html {
        root /usr/share/nginx/html;
    }
}

Zusammenfassen

Nach den oben genannten Vorgängen können Sie die interne Konfigurationsdatei des Nginx-Docker-Containers schließlich über Umgebungsvariablen aktualisieren. Mission erfüllt!

Oben finden Sie Einzelheiten zur Verwendung von Umgebungsvariablen in der Nginx-Konfigurationsdatei. Weitere Informationen zu Nginx-Umgebungsvariablen finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • So implementieren Sie eine verteilte Strombegrenzung mit Nginx
  • So stellen Sie statische Seiten mit Nginx bereit
  • So verwenden Sie den Nginx-Proxy zum Surfen im Internet
  • Detaillierte Erklärung zum Erstellen eines CDN-Servers mit Nginx (Bild und Text)
  • Details zur Verwendung des Nginx-Arbeitsmodus und der Proxy-Konfiguration

<<:  Hinweise zur Groß-/Kleinschreibung bei MySQL

>>:  Zwei Arten von Tab-Anwendungen im Webdesign

Artikel empfehlen

Wie stellt MySQL die Datenintegrität sicher?

Die Bedeutung von Datenkonsistenz und -integrität...

Analysieren Sie mehrere gängige Lösungen für MySQL-Ausnahmen

Inhaltsverzeichnis Vorwort 1. Der vom Code konfig...

So erkennen Sie die Ubuntu-Version mithilfe der Befehlszeile

Methode 1: Verwenden Sie das Dienstprogramm lsb_r...

Angular Dependency Injection erklärt

Inhaltsverzeichnis Überblick 1. Abhängigkeitsinje...

Drei Implementierungsmethoden für die MySQL-Kopiertabelle und die Grant-Analyse

So kopieren Sie schnell eine Tabelle Erstellen Si...

CentOS-System-RPM-Installation und -Konfiguration von Nginx

Inhaltsverzeichnis CentOS RPM-Installation und Ko...

Detaillierte Erklärung des Prinzips der Docker-Image-Schichtung

Basisbild Das Basisbild hat zwei Bedeutungen: Ist...

Erläuterung der HTML-Tags

Erläuterung der HTML-Tags 1. HTML-Tags Tag: !DOCT...

Untersuchung und Korrektur des seltsamen Verhaltens von parseInt() in js

Hintergrund: Ich frage mich, ob Ihnen aufgefallen...

Detailliertes Tutorial zum Herunterladen von MySQL unter Windows 10

MySQL-Versionen werden in Enterprise Edition und ...

30 kostenlose hochwertige englische Ribbon-Schriftarten

30 kostenlose englische Ribbon-Schriftarten in hoh...