<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=Nginx_Grundkonfiguration</id>
	<title>Nginx Grundkonfiguration - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=Nginx_Grundkonfiguration"/>
	<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=Nginx_Grundkonfiguration&amp;action=history"/>
	<updated>2026-11-03T00:10:19Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.ixheim.de/index.php?title=Nginx_Grundkonfiguration&amp;diff=74085&amp;oldid=prev</id>
		<title>Thomas.will@claude: Neue Seite: fehlte, war aber schon von drei Seiten verlinkt</title>
		<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=Nginx_Grundkonfiguration&amp;diff=74085&amp;oldid=prev"/>
		<updated>2026-10-31T15:16:47Z</updated>

		<summary type="html">&lt;p&gt;Neue Seite: fehlte, war aber schon von drei Seiten verlinkt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Einstieg in Nginx: Installation, Verzeichnisstruktur, der erste Server-Block und wie man Änderungen übernimmt, ohne den Dienst lahmzulegen. Vertiefung in [[Nginx Reverse Proxy und Load Balancing]]. Dazu die Animation [https://xinux.org/nginx-grundkonfiguration.html Nginx: Grundkonfiguration] ([https://xinux.org/nginx-grundkonfiguration-einfach.html einfach]).&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Debian/Ubuntu&lt;br /&gt;
sudo apt install nginx&lt;br /&gt;
&lt;br /&gt;
# Rocky/RHEL (ggf. vorher epel-release)&lt;br /&gt;
sudo dnf install nginx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo systemctl enable --now nginx&lt;br /&gt;
sudo systemctl status nginx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Erster Verdacht bei &amp;quot;geht nicht von außen&amp;quot;:&amp;#039;&amp;#039;&amp;#039; Nginx läuft und antwortet lokal, trotzdem kommt von einem anderen Rechner nichts an – meist blockiert die lokale Firewall (&amp;lt;code&amp;gt;ufw&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;firewalld&amp;lt;/code&amp;gt;) Port 80/443, nicht Nginx selbst.&lt;br /&gt;
&lt;br /&gt;
== Verzeichnisstruktur ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pfad !! Zweck&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;/etc/nginx/nginx.conf&amp;lt;/code&amp;gt; || Hauptkonfiguration, lädt die anderen Dateien per &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;/etc/nginx/conf.d/*.conf&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;sites-available&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;sites-enabled&amp;lt;/code&amp;gt; || eingebundene Server-Blöcke – &amp;lt;code&amp;gt;sites-*&amp;lt;/code&amp;gt; nur bei Debian/Ubuntu üblich, bei Rocky/RHEL meist direkt &amp;lt;code&amp;gt;conf.d&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;/var/www/html&amp;lt;/code&amp;gt; || Standard-Webroot, per &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; frei änderbar&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;/var/log/nginx/access.log&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;error.log&amp;lt;/code&amp;gt; || erster Blick bei jeder Störung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo nginx -T&amp;lt;/code&amp;gt; gibt die komplette, tatsächlich geladene Konfiguration aus.&lt;br /&gt;
&lt;br /&gt;
== Der erste Server-Block ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
    listen 80;&lt;br /&gt;
    server_name example.com;&lt;br /&gt;
    root /var/www/html;&lt;br /&gt;
    index index.html;&lt;br /&gt;
&lt;br /&gt;
    location / {&lt;br /&gt;
        try_files $uri $uri/ =404;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;try_files $uri $uri/ =404;&amp;lt;/code&amp;gt; prüft erst die Datei, dann das Verzeichnis, sonst eine 404-Antwort. Fehlt die Index-Datei und ist kein passender &amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt;-Block da, antwortet Nginx mit &amp;lt;b&amp;gt;403 Forbidden&amp;lt;/b&amp;gt; (kein Directory Listing erlaubt) oder &amp;lt;b&amp;gt;404&amp;lt;/b&amp;gt; – nicht mit einer Meldung über die fehlende Datei selbst.&lt;br /&gt;
&lt;br /&gt;
== Sicher ändern ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo nginx -t &amp;amp;&amp;amp; sudo systemctl reload nginx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nginx -t&amp;lt;/code&amp;gt; prüft nur die Syntax, ohne etwas zu verändern. &amp;lt;code&amp;gt;systemctl reload&amp;lt;/code&amp;gt; übernimmt eine gültige Konfiguration ohne Verbindungsabbruch – anders als &amp;lt;code&amp;gt;restart&amp;lt;/code&amp;gt;, der den Dienst kurz komplett beendet: Bei einem Tippfehler in der Konfiguration kommt er danach nicht mehr hoch, und die Seite ist für alle weg. Das &amp;lt;code&amp;gt;&amp;amp;amp;&amp;amp;amp;&amp;lt;/code&amp;gt; sorgt dafür, dass bei einem Syntaxfehler gar nicht erst neu geladen wird.&lt;br /&gt;
&lt;br /&gt;
== Mehrere Sites ==&lt;br /&gt;
&lt;br /&gt;
Mehrere &amp;lt;code&amp;gt;server&amp;lt;/code&amp;gt;-Blöcke können denselben Port teilen. &amp;lt;code&amp;gt;server_name&amp;lt;/code&amp;gt; entscheidet anhand des &amp;lt;b&amp;gt;Host&amp;lt;/b&amp;gt;-Headers, welcher Block zuständig ist – nicht die Reihenfolge im Config.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
    listen 80;&lt;br /&gt;
    server_name a.example.com;&lt;br /&gt;
    root /srv/a;&lt;br /&gt;
}&lt;br /&gt;
server {&lt;br /&gt;
    listen 80;&lt;br /&gt;
    server_name b.example.com;&lt;br /&gt;
    root /srv/b;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wichtig:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;server_name&amp;lt;/code&amp;gt; erzeugt keinen DNS-Eintrag. Ohne passenden DNS-Eintrag, der auf diesen Server zeigt, landet eine Anfrage nie hier. &amp;lt;code&amp;gt;listen 80 default_server;&amp;lt;/code&amp;gt; fängt alle Anfragen ohne passenden &amp;lt;code&amp;gt;server_name&amp;lt;/code&amp;gt; auf.&lt;br /&gt;
&lt;br /&gt;
== Fehlerbilder ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Symptom !! Ursache !! Erster Schritt&lt;br /&gt;
|-&lt;br /&gt;
| Seite lädt gar nicht || Dienst nicht gestartet oder Firewall blockiert Port || &amp;lt;code&amp;gt;systemctl status nginx&amp;lt;/code&amp;gt;, dann Firewall-Regeln prüfen&lt;br /&gt;
|-&lt;br /&gt;
| 403 Forbidden || Dateirechte oder kein Index, kein Directory Listing erlaubt || Rechte und Vorhandensein der Index-Datei prüfen&lt;br /&gt;
|-&lt;br /&gt;
| 404 Not Found || falscher &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; oder Datei liegt woanders || &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; im richtigen &amp;lt;code&amp;gt;server&amp;lt;/code&amp;gt;-Block prüfen&lt;br /&gt;
|-&lt;br /&gt;
| Dienst nach Änderung ganz weg || &amp;lt;code&amp;gt;restart&amp;lt;/code&amp;gt; statt &amp;lt;code&amp;gt;reload&amp;lt;/code&amp;gt; bei fehlerhafter Konfiguration || vor jedem Reload: &amp;lt;code&amp;gt;nginx -t&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Änderung an &amp;lt;code&amp;gt;sites-available&amp;lt;/code&amp;gt; wirkt nicht || Symlink in &amp;lt;code&amp;gt;sites-enabled&amp;lt;/code&amp;gt; fehlt (Debian-Familie) || &amp;lt;code&amp;gt;ln -s ../sites-available/datei sites-enabled/datei&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://nginx.org/en/docs/ offizielle Nginx-Dokumentation]&lt;br /&gt;
* [[Nginx Grundlagen]]&lt;br /&gt;
* [[Nginx Reverse Proxy und Load Balancing]]&lt;br /&gt;
* Animation: [https://xinux.org/nginx-grundkonfiguration.html Nginx: Grundkonfiguration]&lt;/div&gt;</summary>
		<author><name>Thomas.will@claude</name></author>
	</entry>
</feed>