Nginx HTTPS Virtueller Host

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

nginx: HTTPS-VirtualHost für braun.it113.int unter Rocky Linux

Firewall konfigurieren

HTTPS (Port 443) freigeben
  • firewall-cmd --permanent --add-service=https
HTTP (Port 80) freigeben – z. B. für Weiterleitungen
  • firewall-cmd --permanent --add-service=http
Firewall neu laden
  • firewall-cmd --reload
Aktive Regeln anzeigen
  • firewall-cmd --list-all

SELinux: Zugriff auf Webverzeichnisse freischalten

Standardmäßig sind manuell angelegte Verzeichnisse wie /var/www/braun durch SELinux blockiert.

Damit nginx darauf zugreifen darf, muss der richtige SELinux-Kontext gesetzt werden.

Zugriff erlauben
  • chcon -Rt httpd_sys_content_t /var/www/braun
nginx neu laden
  • systemctl reload nginx
Kontext prüfen
  • ls -Zd /var/www/braun

Fehleranalyse

Letzte SELinux-Blockaden anzeigen
  • ausearch -m avc -ts recent

Exkurs

  • SELinux (Security-Enhanced Linux) ist eine Sicherheitsfunktion im Linux-Kernel zur Zugriffskontrolle.
  • Es verwendet Sicherheitskontexte, um genau zu steuern, welche Prozesse auf welche Ressourcen zugreifen dürfen.
  • SELinux blockiert Zugriffe auch dann, wenn die Dateiberechtigungen eigentlich ausreichen würden.
  • Dadurch wird die Systemsicherheit erhöht und kompromittierte Dienste können isoliert werden.
  • Unter Rocky Linux ist SELinux standardmäßig aktiv und muss bei Webservern berücksichtigt werden.
  • Nach dem Setzen des SELinux-Kontexts httpd_sys_content_t erkennt SELinux das Verzeichnis als Webinhalt, und der Webserver darf darauf zugreifen.

Konfigurationsdatei anlegen

Die folgende Konfiguration wird als Datei gespeichert unter:

/etc/nginx/conf.d/braun.it113.int.conf

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name braun.it113.int;

    root /var/www/braun;
    index index.html index.htm;

    ssl_certificate /etc/nginx/ssl/braun.it113.int.crt;
    ssl_certificate_key /etc/nginx/ssl/braun.it113.int.key;

    location / {
        try_files $uri $uri/ =404;
    }
}

Verzeichnisstruktur vorbereiten

Verzeichnis für Inhalte anlegen
  • mkdir -p /var/www/braun

Startseite erzeugen

Script herunterladen (außerhalb des DocumentRoot)
HTML-Seite erzeugen
  • ./webgen.sh braun > /var/www/braun/index.html

nginx neu starten

Konfiguration übernehmen
  • systemctl restart nginx
Status prüfen
  • systemctl status nginx