Tutorial: NGINX und NGINX Plus als Webserver und Reverse-Proxy in AWS einrichten

NGINX | 12. November 2021

Seit seiner Einführung vor mehr als 15 Jahren hat NGINX stetig an Beliebtheit gewonnen und ist heute der beliebteste Webserver der Welt, auf dem mehr als [ngx_snippet name=’number-sites’] Websites laufen. In diesem Fall halten wir es für sinnvoll, der Mehrheit zu folgen und NGINX für all Ihre Anforderungen an das Web-Serving zu verwenden und darüber hinaus seine Funktionen als Reverse-Proxy, Content-Cache, Load-Balancer, API-Gateway und mehr zu nutzen.

Dieser Blogbeitrag zeigt Ihnen, wie Sie NGINX unter Ubuntu 20.04 auf Amazon Web Services (AWS) in einer benutzerfreundlichen Umgebung einrichten und in Betrieb nehmen, ohne die Einstellungen auf Ihrem PC zu verändern. Er behandelt sowohl NGINX als auch NGINX Plus, die kommerziell unterstützte Version mit zusätzlichen Funktionen für den Unternehmenseinsatz.

Nachdem Sie die hier beschriebenen Schritte abgeschlossen haben, können Sie mit der NGINX Core-Schulung fortfahren (mit Kursleitung oder auf Abruf). In diesem ganztägigen Kurs lernen Sie, NGINX zu konfigurieren, zu administrieren und zu verwalten. Der Kurs bereitet Sie außerdem auf unsere weiteren von Kursleitern geführten und im Selbststudium absolvierbaren Kurse zu fortgeschrittenen Themen vor.

Das Tutorial enthält Anleitungen für die folgenden Aufgaben:

Auf ein Terminal zugreifen

Für dieses Tutorial benötigen Sie ein Terminal, um eine Verbindung zu Ihrer Amazon Elastic Compute Cloud (EC2)-Instanz herzustellen. Macs verfügen über ein integriertes Terminal, Windows-Benutzer müssen jedoch PuTTY oder ein vergleichbares Tool herunterladen. Wenn Sie lieber Ihr eigenes lokales Terminal verwenden möchten, um NGINX oder NGINX Plus einzurichten und Webinhalte bereitzustellen, können Sie direkt zu AWS einrichten springen.

Zugriff auf ein Terminal unter macOS

Auf Macs können Sie das integrierte Terminal verwenden, um alle Schritte in diesem Tutorial auszuführen.

  1. Klicken Sie auf das Lupensymbol am rechten Ende der oberen Leiste auf dem Bildschirm.
  2. Geben Sie terminal in das Pop-up-Feld ein und drücken Sie die Eingabetaste. Ein separates Terminalfenster wird geöffnet.

Zugriff auf ein Terminal unter Windows

Windows verfügt nicht über ein integriertes Terminal, daher müssen Sie eines aus dem Internet herunterladen. Wie AWS empfehlen auch wir PuTTY, einen weltweit verwendeten ssh-Client.

  1. Rufen Sie die PUTTY-Downloadseite auf.
  2. Laden Sie die Datei herunter, installieren Sie sie an einem Speicherort Ihrer Wahl und öffnen Sie sie anschließend. Sie können jedoch erst auf das eigentliche Terminal zugreifen, nachdem Sie die Schritte unter „AWS einrichten“ abgeschlossen haben.

AWS einrichten

In diesem Tutorial gehen wir davon aus, dass Sie über eine Amazon Virtual Private Cloud (VPC) verfügen und einfach die standardmäßige VPC-Konfiguration verwenden können, die bei den meisten Konten erstellt wird. In diesem Abschnitt richten Sie Ihre AWS-Bereitstellung ein, indem Sie eine EC2-Instanz erstellen und eine Verbindung zu ihr herstellen.

Hinweis: Das folgende Verfahren und die Screenshots zum Erstellen einer EC2-Instanz wurden zum Zeitpunkt der Erstellung überprüft, können jedoch von AWS geändert werden. Passen Sie die Anweisungen bei Bedarf an.

  1. Melden Sie sich auf der AWS-Startseite bei der (AWS Management) Console an oder erstellen Sie zunächst ein neues Konto, falls erforderlich.
  2. Klicken Sie in der Titelleiste der Konsole auf Services und anschließend im Abschnitt Compute auf EC2.
    Screenshot mit der Auswahl von „EC2“ auf der AWS-Seite „Services“
  3. Klicken Sie auf der daraufhin geöffneten Seite „EC2 Dashboard“ auf die Schaltfläche „Launch Instance“.
  4. Klicken Sie auf der Seite „Schritt 1“ in der Zeile „Ubuntu Server 20.04 LTS (HVM), SSD-Volume-Typ“ auf die Schaltfläche „Auswählen“ und behalten Sie die standardmäßig ausgewählte 64-Bit-Architektur (x86) bei.
    Screenshot der Seite „Step 1“ im Assistenten zum Erstellen einer Amazon-EC2-Instanz
  5. Wählen Sie auf der Seite Schritt 2 den Instance-Typ t2.micro aus, der zum Zeitpunkt der Erstellung als „Für kostenloses Kontingent berechtigt“ gekennzeichnet und standardmäßig ausgewählt ist. Klicken Sie auf die Schaltfläche „Weiter: Instance-Details konfigurieren“.
    Screenshot der Seite „Schritt 2“ im Assistenten zum Erstellen einer Amazon-EC2-Instanz
  6. Stellen Sie auf der Seite „Schritt 3“ sicher, dass im Feld „Netzwerk“ die gewünschte VPC ausgewählt ist und dass das Feld „Öffentliche IP automatisch zuweisen“ entweder auf die Standardeinstellung „Subnetzeinstellung verwenden (Aktivieren)“ oder auf „Aktivieren“ gesetzt ist. Behalten Sie für alle übrigen Einstellungen die Standardwerte bei.
    Screenshot der Seite „Schritt 3“ im Assistenten zum Erstellen einer Amazon-EC2-Instanz
  7. Klicken Sie oben auf der Seite auf „6. Sicherheitsgruppe konfigurieren“.
  8. Führen Sie auf der Seite „Schritt 6“ die folgenden Schritte aus, um eingehenden HTTP- und HTTPS-Datenverkehr zuzulassen (standardmäßig akzeptieren EC2-Instanzen nur SSH-Datenverkehr):
    Screenshot der Seite „Schritt 6“ im Assistenten zum Erstellen einer Amazon-EC2-Instanz
    • Klicken Sie unterhalb der Tabelle auf die Schaltfläche Regel hinzufügen und wählen Sie anschließend im Dropdown-Menü in der Spalte Typ die Option HTTP aus. Für dieses Tutorial erlauben wir den Zugriff von jeder beliebigen IP-Adresse (der Wert in der Spalte Quelle lautet Überall 0.0.0.0/0, ::/0). Für Produktionsumgebungen empfehlen wir, den Warnhinweis auf der Seite zu beachten, der die Verwendung von Sicherheitsgruppen zur Zugriffskontrolle vorschreibt.
    • Wiederholen Sie den vorherigen Schritt für HTTPS.
    • Klicken Sie unten auf der Seite auf die Schaltfläche „Überprüfen und starten“.
  9. Klicken Sie auf der Seite „Schritt 7“ unten auf die Schaltfläche „Launch“.
  10. Erstellen Sie im eingeblendeten Dialogfeld ein neues Schlüsselpaar:
    Screenshot des Amazon-EC2-Pop-up-Fensters „Vorhandenes Schlüsselpaar auswählen oder neues Schlüsselpaar erstellen“
    • Wählen Sie im oberen Dropdown-Menü die Option „Create a new key pair“ aus.
    • Wählen Sie einen Schlüsselpaar-Typ aus. In diesem Tutorial wählen wir RSA aus.
    • Geben Sie im Feld „Schlüsselpaarname“ einen Namen ein, z. B. NGINX_key.
    • Klicken Sie auf die Schaltfläche „Schlüsselpaar herunterladen“.
    • Wie im animierten Screenshot unten dargestellt, wird die Schaltfläche „Schlüsselpaar herunterladen“ durch ein Kontrollkästchen ersetzt. Aktivieren Sie es, um zu bestätigen, dass Sie auf den privaten Schlüssel zugreifen können.
    • Klicken Sie auf die Schaltfläche „Launch Instances“.
  11. Verschieben Sie die heruntergeladene .pem-Datei (in diesem Tutorial NGINX_key.pem) mit Ihrem Dateimanager an einen sicheren Speicherort. In diesem Tutorial legen wir sie im Verzeichnis /Desktop/NGIN ab.
  12. Wenn Sie ein Windows-Terminal verwenden, folgen Sie der AWS-Anleitung zum Herunterladen des PuTTYgen-Dienstprogramms und konvertieren Sie die .pem-Datei in eine .ppk-Datei.
  13. Klicken Sie auf der Seite „Startstatus“ unten auf die Schaltfläche „Instances anzeigen“.
  14. Auf der daraufhin geöffneten Seite „Instances“ wird die neue Instanz in der Tabelle angezeigt. Geben Sie ihr einen Namen:
    Screenshot der Amazon-EC2-Seite „Instances“, auf der der Name einer Instanz bearbeitet wird
    • Klicken Sie auf das Stiftsymbol in der Spalte „Name“.
    • Geben Sie den Namen in das Pop-up-Fenster „Name bearbeiten“ ein und klicken Sie auf die Schaltfläche „Speichern“.
  15. Klicken Sie oben auf dem Bildschirm auf die Schaltfläche „Verbinden“. Ein Fenster wie das folgende wird geöffnet. Öffnen Sie die Registerkarte „SSH-Client“ und folgen Sie den Anweisungen, um eine Verbindung mit der Instanz herzustellen. Wenn Sie Windows verwenden, ersetzen Sie in den Befehlen .ppk durch .pem.
    Screenshot des Amazon-EC2-Pop-up-Fensters „Mit Instance verbinden“

Installieren der NGINX-Software

Nachdem Ihre AWS-Umgebung nun eingerichtet ist, können Sie entweder NGINX Open Source oder NGINX Plus installieren, das Sie 30 Tage lang kostenlos testen können. Beide Optionen eignen sich für dieses Tutorial. Wenn Sie jedoch die erweiterten Funktionen von NGINX Plus näher kennenlernen möchten, fordern Sie bitte eine kostenlose Testversion an.

NGINX Open Source installieren

Die meisten Linux-Distributionen und BSD-Varianten bieten NGINX Open Source in ihren Standard-Paketquellen an, allerdings handelt es sich dabei in der Regel nicht um die neueste Version. Wir empfehlen, NGINX Open Source direkt von nginx.org herunterzuladen. Zum Hinzufügen des NGINX-Repositorys zur Ubuntu-Paketverwaltung (apt) sind nur wenige zusätzliche Schritte erforderlich.

Führen Sie die folgenden Schritte aus, um NGINX Open Source zu installieren:

  1. Öffnen Sie Ihr Terminal.
  2. Laden Sie den NGINX-Signaturschlüssel herunter:
$ sudo wget http://nginx.org/keys/nginx_signing.key
  1. Fügen Sie den Schlüssel hinzu:
$ sudo apt-key add nginx_signing.key
  1. Wechseln Sie in das Verzeichnis „/etc/apt“.
$ cd /etc/apt
  1. Bearbeiten Sie die Datei „sources.list“ und fügen Sie am Ende den folgenden Text hinzu:
deb http://nginx.org/packages/ubuntu focal nginx
deb-src http://nginx.org/packages/ubuntu focal nginx
  1. Hinweis: Das Schlüsselwort „focal“ in jeder dieser Zeilen steht für Ubuntu 20.04. Wenn Sie eine andere Ubuntu-Version verwenden, ersetzen Sie es durch das erste Wort des Codenamens der jeweiligen Version (zum Beispiel „bionic“ für Ubuntu 18.04).
  2. Aktualisieren Sie die NGINX-Software:
$ sudo apt-get update
  1. NGINX installieren:
$ sudo apt-get install nginx
  1. Geben Sie Y ein, wenn Sie dazu aufgefordert werden.
  2. Starten Sie NGINX:
$ sudo systemctl start nginx.service
  1. Überprüfen Sie den Status:
$ sudo systemctl status nginx.service
  1. Fahren Sie mit „Ihre Webseite öffnen“ fort.

NGINX Plus installieren

  1. Wenn Sie NGINX Plus noch nicht haben, melden Sie sich für eine kostenlose 30‑Tage-Testversion an.
  2. Wenn Sie per E-Mail benachrichtigt werden, dass Ihr Testabonnement verfügbar ist, folgen Sie den Anweisungen, um Ihr Sicherheitszertifikat, Ihren privaten Schlüssel und Ihr JWT herunterzuladen und anschließend NGINX Plus zu installieren.
  3. Wenn die Installation abgeschlossen ist und NGINX Plus ausgeführt wird, fahren Sie mit „Webseite öffnen“ fort.

Öffnen Ihrer Webseite

Nachdem Sie die NGINX-Software gestartet haben, sehen Sie sich zunächst die Webseite an, die NGINX und NGINX Plus standardmäßig bereitstellen, bevor Sie sie für die Bereitstellung der Inhalte Ihrer Website konfigurieren. Gehen Sie dazu wie folgt vor:

  1. Navigieren Sie zur Registerkarte „Instances“ im EC2-Dashboard, falls Sie sich nicht bereits dort befinden. (Klicken Sie dazu beispielsweise in der oberen Navigationsleiste der Konsole auf „Services“, im Abschnitt „Compute“ auf „EC2“ und anschließend in der linken Navigationsspalte auf „Instances“.)
  2. Scrollen Sie in der Tabelle nach rechts, bis die öffentliche IP-Adresse der Instanz in der Spalte „Öffentliche IPv4-Adresse“ angezeigt wird (im Screenshot lautet sie 3.22.51.xxx). Wählen Sie die Adresse aus und kopieren Sie sie in die Zwischenablage.
    Screenshot der Amazon-EC2-Seite „Instances“, auf der das Feld „Public IPv4 address“ für eine Instanz angezeigt wird
  3. Öffnen Sie einen neuen Browser-Tab und fügen Sie die Adresse in die Adressleiste ein. Die Standardseite „Welcome to nginx!“ wird angezeigt. Dies bedeutet, dass NGINX installiert ist und ausgeführt wird, aber noch nicht konfiguriert wurde.
    Die Willkommensseite bestätigt, dass Ihr NGINX-Reverse-Proxy und Webserver betriebsbereit ist

Beispieldateien einrichten

Nachdem Sie eine funktionsfähige Version von NGINX oder NGINX Plus installiert haben, können Sie sie nun sinnvoll einsetzen! Richten Sie zunächst einige Dateien und Verzeichnisse ein.

  1. Wechseln Sie in Ihr Home-Verzeichnis, falls Sie sich nicht bereits dort befinden. In den folgenden Anweisungen lautet es /home/ubuntu.
  2. Erstellen Sie ein Verzeichnis namens „public_html“ und wechseln Sie in dieses Verzeichnis.
  3. Erstellen Sie im Verzeichnis „public_html“ eine Datei namens „index.html“ und ein Verzeichnis namens „application1“.
  4. Erstellen Sie im Verzeichnis „application1“ eine Datei namens „app1.html“, die einen beliebigen Text enthält.
  5. Wechseln Sie zurück in Ihr Home-Verzeichnis.
  6. Erstellen Sie ein Verzeichnis namens „data“.
  7. Erstellen Sie im Verzeichnis „data“ ein Verzeichnis namens „images“.

Seiten und Bilder bereitstellen

Unser erster Anwendungsfall für NGINX oder NGINX Plus besteht darin, Benutzern Seiten und Bilder über eine Webseite bereitzustellen.

  1. Wechseln Sie in das Verzeichnis /etc/nginx/conf.d.
  2. Benennen Sie default.conf in default.conf.bak um, um zu verhindern, dass NGINX oder NGINX Plus die Datei als Standardkonfigurationsdatei verwendet.
  3. Erstellen Sie eine Datei namens „server1.conf“ mit der folgenden Konfiguration:
server {    root /home/ubuntu/public_html;

    location /application1 {  }

    location /images {		
        root /home/ubuntu/data;	
    }
}
  1. Dokumentation zu den Direktiven: location, root, server
  2. Wechseln Sie in das Verzeichnis ~/data/images.
  3. Suchen Sie ein Bild, das Sie bereitstellen möchten, und kopieren Sie es in das Verzeichnis (~/data/images). Der folgende Befehl kopiert beispielsweise das NGINX-Logo:
$ curl -o NGINX-logo.png https://www.nginx.com/wp-content/uploads/2021/11/NGINX-logo-2020.png
  1. Laden Sie NGINX oder NGINX Plus neu:
$ sudo nginx -s reload
  1. Rufen Sie in einem Webbrowser das Bild unter dieser URL auf, wobei NGINX-server die öffentliche IP-Adresse Ihrer EC2-Instanz ist: https://NGINX-server/images/NGINX-logo.png
  2. Rufen Sie auch die Anwendung auf und sehen Sie sich an, was angezeigt wird: https://NGINX-server/application1/app1.html

Einrichten eines Proxyservers

Nachdem Sie nun über einen funktionierenden Webserver verfügen, erfahren Sie, wie Sie ihn für die Weiterleitung von Datenverkehr konfigurieren. Dadurch können Sie den Datenverkehr an andere Server weiterleiten – ein wichtiger Schritt bei der Einrichtung des Lastenausgleichs. Gehen Sie dazu wie folgt vor:

  1. Erstellen Sie im Verzeichnis „~/data“ ein Verzeichnis namens „server2“.
  2. Erstellen Sie im Verzeichnis „server2“ ein Verzeichnis namens „sampleApp“.
  3. Erstellen Sie im Verzeichnis „sampleApp“ eine Datei namens „index.html“, die einen beliebigen Text enthält.
  4. Wechseln Sie in das Verzeichnis „/etc/nginx/conf.d“.
  5. Erstellen Sie eine Datei namens „server2.conf“ mit der folgenden Konfiguration:
server {    listen 8080;
    root /home/ubuntu/data/server2;
}
  1. Dokumentation zu den Direktiven: listen, root, server
  2. Ändern Sie server1.conf, indem Sie im ersten proxy_pass-Direktive im ersten location-Block wie folgt hinzufügen:
server {    root /home/ubuntu/public_html;

    location /application1 {
        proxy_pass http://localhost:8080/sampleApp;
    }

    location /images {
        root /home/ubuntu/data;
    }
}
  1. Dokumentation zu den Direktiven: location, proxy_pass, root, server
  2. NGINX oder NGINX Plus neu laden:
$ sudo nginx -s reload
  1. Rufen Sie die folgende URL in Ihrem Browser auf und prüfen Sie, was sich gegenüber dem Aufruf unter „Bereitstellen von Seiten und Bildern“ geändert hat: https://NGINX-Server/application1/index.html

Das war’s! Sie verfügen nun über eine funktionsfähige Ubuntu-Instanz mit NGINX, die als Proxyserver eingesetzt werden kann.

Anleitungen zur Bereitstellung von NGINX und NGINX Plus auf AWS für weitere Anwendungsfälle finden Sie in unseren Bereitstellungsleitfäden.

Fazit

In diesem Tutorial haben Sie erfahren, wie Sie NGINX oder NGINX Plus einrichten, um Dateien und Bilder über das Internet bereitzustellen und als Reverse-Proxy zu fungieren. Wenn Sie Ihre Kenntnisse über NGINX vertiefen möchten, bieten wir den Schulungskurs NGINX Core an (mit Kursleitung oder auf Abruf). Dieser behandelt sowohl die Themen dieses Tutorials als auch weitere Grundlagen der Bereitstellung von Webinhalten und Anwendungen, darunter Lastverteilung, standortbasiertes Routing und Sicherheit. Sehen Sie sich außerdem die Dokumentation unter nginx.org und den NGINX Plus-Administratorleitfaden an. Sofern nicht anders angegeben, gelten die Artikel sowohl für NGINX Open Source als auch für NGINX Plus.


Teilen
Schlagwörter: F5 NGINX, 2021, Tech

Ähnliche Blogbeiträge

Die Zukunft von NGINX: Zurück zu unseren Open-Source-Wurzeln
NGINX | 23.08.2022

Die Zukunft von NGINX: Zurück zu unseren Open-Source-Wurzeln

Beim NGINX Sprint 2022 besinnen wir uns auf unsere Open-Source-Wurzeln. Erfahren Sie mehr über die Initiativen, die wir im kommenden Jahr verfolgen, und teilen Sie uns mit, was Sie sich wünschen.

Ein Leitfaden zur Auswahl eines Ingress-Controllers, Teil 1: Ermitteln Sie Ihre Anforderungen
NGINX | 08.09.2021

Ein Leitfaden zur Auswahl eines Ingress-Controllers, Teil 1: Ermitteln Sie Ihre Anforderungen

Ein Ingress-Controller kann eines der leistungsstärksten Tools in Ihrem Kubernetes-Stack sein. Erfahren Sie, wie Sie Ihre Ingress-Anforderungen ermitteln, um die beste Option auszuwählen.

Bereitstellung des NGINX Ingress Controllers auf Amazon EKS: So haben wir getestet
NGINX | 16.08.2021

Bereitstellung des NGINX Ingress Controllers auf Amazon EKS: So haben wir getestet

Wir haben kürzlich den Lösungsleitfaden zum NGINX Ingress Controller um Empfehlungen zur Dimensionierung für Amazon Elastic Kubernetes Service (EKS) ergänzt. In diesem Blogbeitrag erläutern wir, wie wir diese Empfehlungen erarbeitet haben, und stellen Ihnen alle Informationen zur Verfügung, die Sie benötigen, um selbst ähnliche Tests durchzuführen.

Protokollierung des Datenverkehrs zwischen NGINX und Upstream-Servern bei CDN77
NGINX | 12.12.2018

Protokollierung des Datenverkehrs zwischen NGINX und Upstream-Servern bei CDN77

Bei der Fehlersuche bei Datenverkehrsproblemen zwischen NGINX und Upstream-Servern konnte CDN77 die benötigten Daten nur aus dem Fehlerprotokoll mit aktivierter Debug-Ausgabe beziehen, was die Leistung beeinträchtigt und riesige Dateien erzeugt. Daher entwickelte das Team ein neues benutzerdefiniertes Modul, das ausschließlich die benötigten Daten protokolliert.

Ankündigung von NGINX Plus R16
NGINX | 05.09.2018

Ankündigung von NGINX Plus R16

NGINX Plus R16 ist eine einheitliche, elastische Ingress- und Egress-Schicht für Anwendungen, die die Funktionen eines Load Balancers, API-Gateways und einer WAF vereint und neue Features wie clusterfähige Ratenbegrenzung, Schlüssel-Wert-Speicher, „Random with Two Choices“, verbessertes UDP-Load-Balancing und vieles mehr bietet.

5 Gründe für den Umstieg auf softwarebasiertes Load Balancing
NGINX | 13.10.2016

5 Gründe für den Umstieg auf softwarebasiertes Load Balancing

Entdecken Sie fünf Gründe für den Wechsel zu einem softwarebasierten Load Balancer wie NGINX Plus, darunter Kosteneinsparungen, die Einführung von DevOps und eine einheitliche Lösung für alle Umgebungen.