Webproxy mit nginx für HTTP und X.509 Zertifikate

Aus Xinux Wiki
Version vom 12. Juni 2026, 07:10 Uhr von Thomas.will (Diskussion | Beiträge) (→‎Proxy-Konfiguration mit TLS)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Das Template

Wir nehmen das rocky-template

Netzkonfiguration Reverse Proxy-Server (DMZ)

Parameter Wert Erläuterung
Netzwerk (NIC) DMZ Interface-Zuweisung in VirtualBox
IP 10.88.2XX.41 Statische IP
CIDR 24 Classless Inter-Domain Routing Präfixlänge
GW 10.88.2XX.1 GATEWAY
NS 10.88.2XX.21 Resolver
FQDN revproxy.it2XX.int Fully Qualified Domain Name
SHORT revproxy Short Name
DOM it2XX.int Domain Name
Anpassen des Templates

Mit debian-setup.sh oder mit rocky-setup.sh

Eintragen auf dem Host unter ~/.ssh/config

Einführung

  • Nginx kann als Reverse Proxy für HTTP- und HTTPS-Dienste verwendet werden.
  • X.509-Zertifikate ermöglichen die TLS-Verschlüsselung für sichere Verbindungen.
  • Der Proxy terminiert TLS zum Client und leitet Anfragen an interne Webserver weiter.

Installation von Nginx

Nginx installieren
  • dnf install nginx
Dienst starten und aktivieren
  • systemctl enable --now nginx

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

Zertifikat erstellen

Ergebnis
/etc/ssl/own.crt
/etc/ssl/own.key

Eine Webseite vorab um zu testen ob unser System soweit geht

  • cat /etc/nginx/conf.d/revproxy.int.conf
server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name revproxy.it2XX.int;

    root /usr/share/nginx/html;
    index index.html index.htm;

    ssl_certificate /etc/ssl/own.crt;
    ssl_certificate_key /etc/ssl/own.key;

    location / {
        try_files $uri $uri/ =404;
    }
}
Konfiguration prüfen
  • nginx -t
Neu starten
  • systemctl restart nginx
Testen

Proxy-Konfiguration mit TLS

  • cat /etc/nginx/conf.d/revproxy.int.conf
server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name revproxy.it2XX.int;

    ssl_certificate /etc/ssl/own.crt;
    ssl_certificate_key /etc/ssl/own.key;

    location / {
        proxy_pass http://mail-gw.it2XX.int:11334;
        proxy_ssl_server_name on;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
Nginx neu laden
  • systemctl reload nginx

Bei Problemen

  • ausearch -m avc -ts recent
----
time->Thu Mar 26 15:50:59 2026
type=PROCTITLE msg=audit(1774536659.561:435): proctitle=6E67696E783A20776F726B65722070726F63657373
type=SYSCALL msg=audit(1774536659.561:435): arch=c000003e syscall=42 success=no exit=-13 a0=d a1=5578211d9fb8 a2=10 a3=7ffcb154f60c items=0 ppid=33457 pid=33458 auid=4294967295 uid=985 gid=984 euid=985 suid=985 fsuid=985 egid=984 sgid=984 fsgid=984 tty=(none) ses=4294967295 comm="nginx" exe="/usr/sbin/nginx" subj=system_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1774536659.561:435): avc:  denied  { name_connect } for  pid=33458 comm="nginx" dest=443 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:http_port_t:s0 tclass=tcp_socket permissive=0
SELinux verbietet nginx ausgehende Verbindungen zum Backend
Nginx Netzwerk-Zugriff dauerhaft freischalten
  • setsebool -P httpd_can_network_connect 1
Prüfen
  • getsebool httpd_can_network_connect

Fazit

  • Nginx ist ein leistungsfähiger Webproxy für HTTP und HTTPS.
  • TLS-Zertifikate bieten Sicherheit und Vertrauenswürdigkeit.
  • SELinux-Booleans steuern, ob der Proxy Verbindungen zum Backend aufbauen darf.