Ausführen einer Webanwendung hinter einem Proxy

10. Mai 2022

Lang: cs en de es

Es 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-proxy
Anstelle 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

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.


+