Ausführen einer Webanwendung hinter einem Proxy
10. Mai 2022Es gibt immer mehr Webanwendungen, die hinter Proxys laufen. Die Konfiguration solcher Anwendungen wird immer komplexer. Dies gilt insbesondere dann, wenn die Anwendung einige Informationen aus HTTP-Headern verarbeitet, die sie für einen korrekten Betrieb benötigt. Sie brauchen also nicht nur die Anwendung, sondern auch einen richtig konfigurierten Proxyserver, denn sonst funktioniert die Anwendung möglicherweise nicht oder nur schlecht, oder es gibt ein mögliches Sicherheitsproblem. In diesem Artikel beschreibe ich, wie man einen solchen Proxy-Server und eine Beispielanwendung konfiguriert.
                
            
Wofür ist ein Proxyserver gedacht
Ein Proxyserver ist eine Software, die Anfragen zwischen dem Client und dem Anwendungsserver übersetzt und gegebenenfalls modifiziert. Er trennt somit das externe und interne Netz. Ein Proxyserver kann auch als eigenständiges Gerät implementiert werden.
Im Falle von Webanwendungen handelt es sich um einen Webproxy. Konkret geht es um einen Reverse-Proxy.
Ein Proxyserver kann von spezialisierten Anwendungen bereitgestellt werden, wie z.B. HAProxy, Varnish, Treafik, und Squid. Oder man konfiguriert einen Apache- oder Nginx-Webserver als Reverse-Proxy.
Ein Reverse Proxy wird heute (2022) oft verwendet, weil,
weil aufgrund der Begrenzung der verfügbaren öffentlichen IPv4-Adressen eine IPv4-Adresse an den Server gerichtet wird,
auf dem der Proxy läuft, der dann Anfragen an einzelne Server im internen Netz weiterleitet, die private IP-Adressen haben.
Der Proxy terminiert auch HTTPS-Verbindungen.
Weitere Informationen finden Sie unter sicheres HTTP.
HAProxy wird oft verwendet, um den Datenverkehr auszugleichen und Ausfälle während Server-Upgrades und deploy (Einsatz) neuer Versionen von Anwendungen zu begrenzen.
Vor dem Jahr 2000 wurde der Web-Proxy als Cache verwendet, was aber nur bis zur Ära des statischen Webs Sinn machte.
In Unternehmen werden Proxys verwendet, um den Datenverkehr im Detail zu untersuchen - was die Benutzer besuchen.
Einrichten eines Proxyservers
Der Reverse-Proxy-Server muss so eingerichtet werden, dass er den Datenverkehr für die Domäne überhaupt erst einmal empfängt. Dann wird konfiguriert, wohin der Verkehr geleitet werden soll und wie die Kommunikation gegebenenfalls geändert werden soll.
Nginx
Beispielhafte Proxy-Einstellungen für den Webserver Nginx:
server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name www.example.com;
        Standort / {
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_for_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Port $server_port;
                proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Host $host;
                proxy_pass http://IP-aplikace:80;
        }
}
Apache
Beispiel für die Einrichtung eines Apache-Webservers als Reverse-Proxy:
        ServerName example.com
        ServerAlias www.example.com
        ProxyPreserveHost Ein
        ProxyRequests Ein
        #ProxyErrorOverride Ein
        ProxyPass / http://192.168.100.93/
        On ProxyPassUmgekehrt / http://192.168.100.93/
        
        RequestHeader setzt X-Forwarded-Port "443"
        RequestHeader setze X-Forwarded-Port "https"
Anwendungseinstellungen
Nette
Wenn Sie das Webanwendungsentwicklung PHP-Framework Nette verwenden, müssen Sie die folgenden Einstellungen in der neon-Konfigurationsdatei hinzufügen:
http: proxy: ip-proxy/ip-range-proxyAnstelle von IP-proxy/IP-range-proxy fügen Sie den IP-Proxy oder IP-Bereich Ihres lokalen Netzwerks hinzu, in dem Sie die Infrastruktur betreiben.
Wordpress
Es kann sein, dass Sie wordpress hinter einem Proxy laufen lassen. Ich hatte ein Problem mit einem alten Wordpress und ich habe das Problem wie folgt gelöst.
Ich fügte folgendes in die wp-config.php Datei ein:
if (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
        $_SERVER['HTTPS'] = 'on';
}
Dies kann in jeder anderen alten PHP-Anwendung ähnlich gehandhabt werden.
Vielleicht ist auch das Video Wie man alte PHP-Anwendungen startet interessant für Sie.
Videotutorial
Informationen zur Funktionsweise des Proxys und zur Einrichtung der Anwendung in Nette können als Video angesehen werden:
PDFs der Präsentation zu diesem Vortrag finden Sie auf meiner IT-Services-Website.
Ressourcen
Ressourcen, in denen Sie weitere Einzelheiten erfahren können:
Artikel zu einem ähnlichen Thema
        
            SAP HANA Datenbank
                            
            
        
            Befehl AT
                            
            
        
            Docker build multiarch image
                            
            
        
            VMware vs. Proxmox: Leistungsvergleich
                            
            
        
            GitLab CI/CD: Testautomatisierung und Anwendungsbereitstellung
                            
            
        
            VPS von VMware zu Proxmox migrieren
                            
            
        
            VMware-Lizenzierungsänderung
                            
            
        
            Ausführen von Microsoft SQL Server unter Linux
                            
            
        
            Sicherung: der Proxmox Backup Server
                            
            
        
            Linux als Router und Firewall
                            
            
        
            Hochladen eines Docker-Images in die Docker-Registry
                            
            
        
            Linux: Verwaltung logischer Datenträger
                            
            
        
            Linux-Software-RAID
                            
            
        
            Migration von Postfächern
                            
            
        
            Mehrstufige Docker-Erstellung
                            
            
        
            Sichern Ihrer Daten durch Einschalten des Computers
                            
            
        
            Podman
                            
            
        
            Importieren von Windows in die Proxmox-Virtualisierung
                            
            
        
            Docker und PHP-Mail
                            
            
        
            Proxmox-Virtualisierung
                            
            
        
            Docker und Cron
                            
            
        
            Lenovo ThinkPad X1 Carbon: Inbetriebnahme des LTE-Modems EM7544
                            
            
        
            Yocto-Projekt: Erstellen eines eigenen Betriebssystems für eingebettete Geräte
                            
            
        
            Vorbereiten eines Linux-Servers für die Ausführung einer Webanwendung in Python
                            
            
        
            Wie man eine schlechte Dateifreigabeleistung in Docker behebt
                            
            
        
            Wie man Docker richtig einsetzt
                            
            
        
            Installation von Linux auf einem dedizierten HPE ProLiant DL320e Server
                            
            
        
            Wie man eine Webanwendung einem Belastungstest unterzieht
                            
            
        
            Warum das JFS-Dateisystem verwenden
                            
            
        
            Booten von einer 4TB-Festplatte mit GTP unter UEFI
                            
            
        
            Btrfs-Dateisystem
                            
            
        
            Raspberry PI
                            
            
        
            WINE - Ausführen von Windous Programmen unter Linux
                            
            
        
            GNU/Linux-Betriebssystem
                            
            
            
Newsletter
    Wenn Sie daran interessiert sind, gelegentlich Neuigkeiten per E-Mail zu erhalten.
    
    Sie können sich registrieren, indem Sie Ihre E-Mail-Adresse eingeben 
        News-Abonnement.
+