> For the complete documentation index, see [llms.txt](https://docs.instantroot.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.instantroot.de/kvm-server/windows/nginx-unter-windows-installieren.md).

# Nginx unter Windows installieren

Nginx ist ein Webserver und Reverse Proxy. Du kannst Nginx nutzen, um Webseiten auszuliefern, Anfragen an andere Anwendungen weiterzuleiten oder Dienste über HTTP und HTTPS erreichbar zu machen.

In diesem Artikel erklären wir dir, wie du Nginx auf einem Windows Server installierst und startest.

### Voraussetzungen

Du benötigst:

* einen Windows Server
* Administratorzugriff
* eine aktive Internetverbindung
* Zugriff per Remote Desktop
* optional eine Domain, wenn Nginx später öffentlich über eine Domain erreichbar sein soll

Für die Installation solltest du dich per Remote Desktop mit deinem Windows Server verbinden.

### Nginx für Windows herunterladen

Nginx stellt eine eigene Windows-Version bereit. Diese wird als ZIP-Datei heruntergeladen und anschließend entpackt.

1. Öffne auf deinem Windows Server einen Browser.
2. Öffne die offizielle Nginx-Webseite.
3. Lade die aktuelle stabile Windows-Version herunter.
4. Speichere die ZIP-Datei auf deinem Server.

Die offizielle Downloadseite findest du unter:

`https://nginx.org/en/download.html`

Nginx bietet in der Regel zwei Varianten an:

| Variante | Bedeutung                               |
| -------- | --------------------------------------- |
| Stable   | stabile Version für normale Nutzung     |
| Mainline | aktuelle Version mit neueren Änderungen |

Für die meisten Nutzer ist die **Stable-Version** empfehlenswert.

### Nginx entpacken

Nach dem Download musst du die ZIP-Datei entpacken.

1. Öffne den Ordner, in dem die ZIP-Datei gespeichert wurde.
2. Klicke mit der rechten Maustaste auf die Datei.
3. Wähle **Alle extrahieren**.
4. Entpacke den Ordner nach `C:\nginx`.

Am Ende sollte die Datei `nginx.exe` unter diesem Pfad liegen:

`C:\nginx\nginx.exe`

Wenn dein entpackter Ordner zum Beispiel `nginx-1.30.2` heißt, kannst du ihn entweder in `nginx` umbenennen oder den Pfad entsprechend anpassen.

### Nginx starten

Öffne die Eingabeaufforderung als Administrator.

1. Klicke auf das Windows-Startmenü.
2. Suche nach `cmd`.
3. Klicke mit der rechten Maustaste auf **Eingabeaufforderung**.
4. Wähle **Als Administrator ausführen**.

Wechsle anschließend in den Nginx-Ordner:

`cd C:\nginx`

Starte Nginx:

`start nginx`

Alternativ kannst du auch direkt aus dem Ordner starten:

`nginx.exe`

### Installation prüfen

Öffne auf dem Server einen Browser und rufe folgende Adresse auf:

`http://localhost`

Wenn Nginx korrekt gestartet wurde, erscheint die Nginx-Startseite.

Du kannst auch von deinem eigenen Computer aus testen, ob Nginx öffentlich erreichbar ist:

`http://SERVER-IP`

Ersetze `SERVER-IP` durch die IP-Adresse deines KVM-Servers.

### Port 80 in der Windows Firewall öffnen

Wenn Nginx lokal funktioniert, aber von außen nicht erreichbar ist, blockiert häufig die Windows Firewall den Zugriff.

Für normale Webseiten muss Port `80` geöffnet sein.

Für HTTPS muss später zusätzlich Port `443` geöffnet werden.

#### Port 80 öffnen

1. Öffne das Windows-Startmenü.
2. Suche nach **Windows Defender Firewall**.
3. Öffne **Erweiterte Einstellungen**.
4. Wähle links **Eingehende Regeln**.
5. Klicke rechts auf **Neue Regel**.
6. Wähle **Port**.
7. Wähle **TCP**.
8. Trage bei bestimmten lokalen Ports `80` ein.
9. Wähle **Verbindung zulassen**.
10. Wähle die passenden Profile aus.
11. Vergib einen Namen, zum Beispiel `Nginx HTTP`.
12. Speichere die Regel.

Danach sollte Nginx über `http://SERVER-IP` erreichbar sein.

### Port 443 für HTTPS öffnen

Wenn du später HTTPS verwenden möchtest, musst du zusätzlich Port `443` öffnen.

Erstelle dafür eine weitere eingehende Regel:

| Einstellung | Wert                |
| ----------- | ------------------- |
| Typ         | Port                |
| Protokoll   | TCP                 |
| Port        | `443`               |
| Aktion      | Verbindung zulassen |
| Name        | `Nginx HTTPS`       |

### Nginx beenden

Wenn du Nginx stoppen möchtest, öffne die Eingabeaufforderung als Administrator und wechsle in den Nginx-Ordner:

`cd C:\nginx`

Nginx stoppen:

`nginx -s stop`

### Nginx neu laden

Wenn du die Konfiguration geändert hast, musst du Nginx nicht immer komplett beenden. Du kannst die Konfiguration neu laden.

Befehl:

`nginx -s reload`

Das ist sinnvoll, wenn du zum Beispiel die Datei `nginx.conf` angepasst hast.

### Nginx-Konfiguration prüfen

Vor dem Neuladen solltest du prüfen, ob die Konfiguration fehlerfrei ist.

Befehl:

`nginx -t`

Wenn die Konfiguration korrekt ist, zeigt Nginx eine erfolgreiche Prüfung an.

Wenn ein Fehler vorhanden ist, wird meistens die betroffene Datei und Zeile angezeigt.

### Wichtige Ordner und Dateien

Nach dem Entpacken findest du mehrere Ordner und Dateien im Nginx-Verzeichnis.

| Pfad                       | Bedeutung               |
| -------------------------- | ----------------------- |
| `C:\nginx\nginx.exe`       | Nginx-Programm          |
| `C:\nginx\conf\nginx.conf` | Hauptkonfiguration      |
| `C:\nginx\html\`           | Standard-Webverzeichnis |
| `C:\nginx\logs\`           | Logdateien              |
| `C:\nginx\logs\access.log` | Zugriffslog             |
| `C:\nginx\logs\error.log`  | Fehlerlog               |

### Standard-Webseite ändern

Die Standard-Webseite liegt im Ordner:

`C:\nginx\html\`

Dort findest du unter anderem die Datei:

`index.html`

Du kannst diese Datei bearbeiten oder durch deine eigene Webseite ersetzen.

Wenn du danach `http://SERVER-IP` öffnest, sollte deine eigene Seite angezeigt werden.

### Einfache Nginx-Konfiguration

Die Hauptkonfiguration liegt hier:

`C:\nginx\conf\nginx.conf`

Eine einfache Server-Konfiguration für Port `80` sieht ungefähr so aus:

`server { listen 80; server_name deine-domain.de; root html; index index.html; }`

Wenn du eine Domain verwenden möchtest, muss diese per DNS auf die IP-Adresse deines Servers zeigen.

### Domain mit Nginx verwenden

Damit deine Domain auf Nginx zeigt, benötigst du einen DNS-Eintrag.

Typischer Eintrag:

| Typ | Name  | Ziel                        |
| --- | ----- | --------------------------- |
| A   | `@`   | IPv4-Adresse deines Servers |
| A   | `www` | IPv4-Adresse deines Servers |

Wenn du eine Subdomain verwenden möchtest:

| Typ | Name  | Ziel                        |
| --- | ----- | --------------------------- |
| A   | `web` | IPv4-Adresse deines Servers |

Danach ist deine Webseite zum Beispiel über folgende Adresse erreichbar:

`http://deinedomain.de`

oder:

`http://web.deinedomain.de`

DNS-Änderungen sind nicht immer sofort aktiv. Es kann einige Minuten bis mehrere Stunden dauern, bis die Änderung überall übernommen wurde.

### Nginx automatisch starten lassen

Nginx wird unter Windows nicht automatisch als Windows-Dienst installiert.

Wenn du Nginx einfach über `start nginx` startest, läuft es nur, solange der Prozess aktiv ist. Nach einem Neustart des Servers musst du Nginx erneut starten.

Für eine dauerhafte Nutzung gibt es zwei typische Möglichkeiten:

* Nginx über die Aufgabenplanung starten
* Nginx mit einem Service-Wrapper als Windows-Dienst einrichten

### Nginx über Aufgabenplanung starten

Du kannst Nginx beim Systemstart über die Windows-Aufgabenplanung starten lassen.

1. Öffne die Windows-Aufgabenplanung.
2. Klicke auf **Aufgabe erstellen**.
3. Vergib einen Namen, zum Beispiel `Nginx Autostart`.
4. Wähle **Mit höchsten Privilegien ausführen**.
5. Erstelle einen Trigger **Beim Systemstart**.
6. Erstelle eine Aktion **Programm starten**.
7. Wähle als Programm `C:\nginx\nginx.exe`.
8. Setze als Startverzeichnis `C:\nginx`.
9. Speichere die Aufgabe.

Starte den Server anschließend neu und prüfe, ob Nginx automatisch gestartet wurde.

### Nginx als Windows-Dienst verwenden

Nginx wird unter Windows standardmäßig nicht als Dienst eingerichtet.

Wenn du Nginx als Dienst betreiben möchtest, kannst du einen Service-Wrapper verwenden. Häufig wird dafür NSSM verwendet.

Dabei wird `nginx.exe` als Windows-Dienst registriert. Das ist praktisch, wenn Nginx automatisch starten und über die Windows-Diensteverwaltung kontrolliert werden soll.

Achte bei solchen Tools darauf, sie nur aus vertrauenswürdigen Quellen zu beziehen.

### Nginx als Reverse Proxy verwenden

Nginx wird häufig als Reverse Proxy verwendet.

Ein Reverse Proxy nimmt Anfragen entgegen und leitet sie intern an eine andere Anwendung weiter.

Beispiel:

* Besucher ruft `http://deinedomain.de` auf
* Nginx empfängt die Anfrage auf Port `80`
* Nginx leitet die Anfrage intern an eine Anwendung auf Port `3000` weiter

Das ist typisch für Anwendungen wie:

* Node.js
* Python-Webapps
* Docker-Anwendungen
* Webinterfaces
* interne Dienste

Eine einfache Reverse-Proxy-Konfiguration kann zum Beispiel auf `127.0.0.1:3000` weiterleiten.

### Nginx Logs prüfen

Wenn Nginx nicht funktioniert, solltest du zuerst die Logs prüfen.

Wichtige Dateien:

`C:\nginx\logs\error.log`

`C:\nginx\logs\access.log`

Die Datei `error.log` enthält Fehler beim Starten oder Verarbeiten von Anfragen.

Die Datei `access.log` zeigt eingehende Zugriffe.

### Häufige Probleme

#### Webseite ist nur lokal erreichbar

Wenn `http://localhost` funktioniert, aber `http://SERVER-IP` nicht erreichbar ist, liegt das häufig an der Firewall.

Prüfe:

* Port `80` ist in der Windows Firewall geöffnet
* Nginx läuft
* die Server-IP ist korrekt
* dein Server ist online
* keine andere Firewall blockiert den Zugriff

#### Port 80 ist bereits belegt

Wenn Nginx nicht startet, kann Port `80` bereits von einem anderen Programm verwendet werden.

Typische Programme sind:

* IIS
* Apache
* andere Webserver
* Entwicklungsserver
* Control Panels

Prüfe belegte Ports mit:

`netstat -ano | findstr :80`

Wenn ein anderes Programm Port `80` nutzt, musst du dieses Programm stoppen oder Nginx auf einen anderen Port konfigurieren.

#### Nginx startet nicht

Prüfe zuerst die Konfiguration:

`nginx -t`

Prüfe anschließend die Fehlerlogs:

`C:\nginx\logs\error.log`

Häufige Ursachen sind:

* falscher Pfad
* fehlerhafte `nginx.conf`
* Port bereits belegt
* fehlende Rechte
* Datei wurde falsch gespeichert
* falsche Klammern in der Konfiguration

#### Änderungen werden nicht übernommen

Wenn du die Konfiguration geändert hast, musst du Nginx neu laden.

Befehl:

`nginx -s reload`

Wenn das nicht funktioniert, prüfe die Konfiguration:

`nginx -t`

#### Domain zeigt nicht auf den Server

Prüfe:

* A-Record zeigt auf die richtige IPv4-Adresse
* DNS-Änderung ist bereits aktiv
* Domain wurde richtig geschrieben
* Nginx ist gestartet
* Port `80` ist geöffnet
* die Nginx-Konfiguration enthält die richtige Domain

#### HTTPS funktioniert nicht

Für HTTPS brauchst du:

* Port `443`
* ein gültiges SSL-Zertifikat
* passende Nginx-Konfiguration
* eine Domain, die auf den Server zeigt

Ohne SSL-Zertifikat funktioniert HTTPS nicht korrekt.

### Windows oder Linux für Nginx?

Nginx kann unter Windows genutzt werden. Für produktive Webserver wird aber häufig Linux verwendet, weil Nginx dort stärker verbreitet ist und sich einfacher als Systemdienst betreiben lässt.

Windows kann sinnvoll sein, wenn:

* deine Anwendung Windows benötigt
* du bereits einen Windows Server nutzt
* du Nginx als einfachen Reverse Proxy verwenden möchtest
* du eine bestimmte Windows-Anwendung veröffentlichen möchtest

Linux ist oft sinnvoller, wenn:

* du einen klassischen Webserver betreiben möchtest
* du viele Webseiten hostest
* du Let's Encrypt automatisiert nutzen möchtest
* du eine stabile Serverdienst-Verwaltung mit systemd möchtest
