Ubuntu 26.04 / Nginx-Sites konfigurieren und Host-Routing überprüfen

Verwalten Sie Ubuntu Nginx-Sites, indem Sie das tatsächliche Include-Layout überprüfen und dann eine Konfiguration von sites-available über sites-enabled aktivieren. Dieses Labor bindet zwei Sites an 127.0.0.1:8080, damit Sie das Host-Routing ohne öffentliche Exposition testen können.

Die neue 8080-Labor-Site ist nur auf die Loopback-Adresse beschränkt; das macht den gesamten Server nicht nur lokal. Die Nginx-Installation von Ubuntu kann ihre Standard-Site starten. Bestätigen Sie vor der Installation den Managementzugang und die Filterung der UFW-Lektion oder verwenden Sie eine dedizierte VM, die von externen Netzwerken isoliert ist.

Installieren und überprüfen Sie die vorhandene Konfiguration

sudo apt update
sudo apt install nginx curl
sudo nginx -t
sudo nginx -T
sudo ss -lntp

Verwenden Sie eine dedizierte VM und beenden Sie keinen anderen Webserver, der einen Port belegt. Überprüfen Sie aktive Includes, Listen-Direktiven, Servernamen und Standardserver in nginx -T. Die vollständige Konfiguration kann sensible Adressen oder Authentifizierungsdetails enthalten; veröffentlichen Sie sie nicht.

Die Nginx-Konfigurationsanleitung von Ubuntu erklärt Serverblöcke, Dokumentwurzeln und die Standardseite.

Überprüfen Sie die Exposition der Standardport-80-Seite

sudo ss -lntp
sudo ufw status verbose
ls -l /etc/nginx/sites-enabled
sudo nginx -T

Listener wie 0.0.0.0:80 oder [::]:80 unterscheiden sich von 127.0.0.1:8080. Bei inaktivem UFW oder einer umfassenden Port-80-Freigabe kann ein anderes Gerät die Standardseite erreichen. Überprüfen Sie lokale Antworten getrennt von neuen Verbindungen durch erlaubte und ausgeschlossene Clients.

Auf einer frischen dedizierten VM kann der folgende Block nur den Symlink der standardmäßig vom Paket bereitgestellten Seite sichern und deaktivieren. Wenden Sie ihn nicht auf einer Produktionsseite an. Er stoppt bei einem unerwarteten Link/Ziel oder fehlgeschlagener Sicherung/Validierung.

(
set -eu
link=/etc/nginx/sites-enabled/default
if [ ! -L "$link" ] || [ "$(readlink -f "$link")" != /etc/nginx/sites-available/default ]; then
    printf 'Not the expected package-default symlink; inspect manually.\n' >&2
    exit 1
fi
backup_dir=$(sudo mktemp -d /root/nginx-default-link.XXXXXX)
sudo cp -a "$link" "$backup_dir/default"
printf 'Preserved link: %s/default\n' "$backup_dir"
sudo rm -- "$link"
sudo nginx -t
sudo systemctl reload nginx
sudo ss -lntp
)

Die ursprüngliche sites-available/default bleibt erhalten. Wenn Port 80 weiterhin lauscht, untersuchen Sie andere Sites/Prozesse. Stellen Sie den aufgezeichneten Backup-Symlink erst nach Überprüfung auf Änderungen am ursprünglichen Pfad wieder her, dann validieren und neu laden. Bewahren Sie Änderungen anderer Administratoren.

Ubuntus Nginx-Installationsanleitung beschreibt die Paketinstallation und den Start des Dienstes.

Bereiten Sie unterschiedliche Document Roots vor

Wenn diese Pfade oder Konfigurationsnamen bereits existieren, bewahren Sie sie auf und wählen Sie neue Labornamen. In dedizierten leeren Pfaden erstellen Sie unterschiedliche Antworten wie folgt. Nginx benötigt Lesezugriff, keinen für die Welt beschreibbaren Inhalt.

sudo install -d -m 0755 /srv/ubuntu-course-alpha /srv/ubuntu-course-beta
printf '%s\n' 'alpha-site' | sudo tee /srv/ubuntu-course-alpha/index.html
printf '%s\n' 'beta-site' | sudo tee /srv/ubuntu-course-beta/index.html

Definieren Sie vollständige lokale Serverblöcke

Speichern Sie die vollständige Konfiguration unten als die neue Datei /etc/nginx/sites-available/ubuntu-course-lab. Die .test-Namen dienen der Dokumentation und lokalen Tests, nicht für öffentliche DNS- oder Zertifikatsausstellung. Bewahren Sie jede vorhandene Standardseite auf Port 80 separat auf.

server {
    listen 127.0.0.1:8080 default_server;
    server_name _;
    return 404;
}
server {
    listen 127.0.0.1:8080;
    server_name alpha.example.test;
    root /srv/ubuntu-course-alpha;
    index index.html;
    location / {
        try_files $uri $uri/ =404;
    }
}
server {
    listen 127.0.0.1:8080;
    server_name beta.example.test;
    root /srv/ubuntu-course-beta;
    index index.html;
    location / {
        try_files $uri $uri/ =404;
    }
}

Der erste Block liefert 404 für nicht übereinstimmende Host-Anfragen an diese Adresse und diesen Port zurück. Der Unterstrich ist kein spezieller Ablehnungsmechanismus; default_server macht diesen Block zum Fallback. Vermeiden Sie doppelte Standards für dieselbe Adresse und denselben Port.

Aktivieren, validieren und neu laden

(
set -eu
sudo ln -s /etc/nginx/sites-available/ubuntu-course-lab /etc/nginx/sites-enabled/ubuntu-course-lab
sudo nginx -t
sudo systemctl reload nginx
)

Wenn der Symlink existiert, überprüfen Sie ihn, anstatt ihn zu überschreiben. Nach einer fehlgeschlagenen Syntaxprüfung nicht neu laden; beheben Sie zuerst die gemeldete Datei, Zeile oder Listener-Konflikt. Erfolgreiche Syntax bedeutet nicht, dass der Datei-Zugriff oder das Host-Routing korrekt ist.

Testnamen, Pfade und Fallback-Antworten

curl --fail --show-error --resolve alpha.example.test:8080:127.0.0.1 http://alpha.example.test:8080/
curl --fail --show-error --resolve beta.example.test:8080:127.0.0.1 http://beta.example.test:8080/
curl -i -H "Host: unknown.example.test" http://127.0.0.1:8080/

Erwarten Sie alpha-site und beta-site für die ersten beiden Anfragen und 404 für die letzte. --resolve ändert die Namens-/Adresszuordnung nur für diese Anfrage, nicht das System-DNS. Bei unerwarteten Ergebnissen prüfen Sie Includes, doppelte Namen, Port, Document Root und Logs.

Deaktivieren Sie das Labor, indem Sie nur seinen Sites-Enabled-Symlink entfernen, dann validieren und neu laden. Andere Sites und Quelldateien beibehalten. Öffentliche Bereitstellung erfordert separate Domain, Adresse, Firewall, HTTPS und Logging-Vorbereitung.