Einrichten eines Reverse-Proxys
09:18, 25.11.2022
Ein Reverse-Proxy-Server ist eine Art Proxy-Server, der Client-Anfragen aus einem externen Netz an einen oder mehrere Server innerhalb des internen Netzes weiterleitet. Im folgenden Artikel wird erklärt, wozu er dient und wie man ihn gegebenenfalls konfiguriert, wobei der Nginx-Webserver als Beispiel dient.
Warum ein Reverse Proxy benötigt wird
Es gibt verschiedene Szenarien für den Einsatz von Technologie. Schauen wir uns die wichtigsten davon an:
- Verbergen der Existenz der untersuchten Server und ihrer Eigenschaften.
- DoS- und DDoS-Schutz – zu diesem Zweck setzen die Systemadministratoren eine Software-Firewall in Verbindung mit einem Reverse-Proxy ein.
- Als Krücke – wenn die Hauptseite keine Verbindung über SSL unterstützt, können Sie einen Reverse-Proxy-Server mit einem Hardware-SSL-Beschleuniger anschließen.
- Verwendung als Load Balancer – ein solcher Server kann für den Lastausgleich zwischen zwei, drei oder mehr Servern sorgen.
- Entlastung des Hauptservers durch Platzierung dynamischer und statischer Inhalte auf dem Reverse Proxy. Diese Methode wird oft als Akzeleration bezeichnet.
- Datenkomprimierung, um die Ladezeit zu verkürzen.
- Kann für sichere und bequeme A/B-Tests verwendet werden.
Jetzt wissen Sie, wozu der umgekehrte Proxy dient. Machen wir weiter mit der Praxis.
Verwendung von Nginx als Reverse-Proxy-Server
Als Erstes müssen Sie die Konfigurationsdatei des Domänenserver-Blocks öffnen. Darin müssen Sie den Standort und den Proxyserver angeben:
server { listen 80; server_name www.example.com example.com; location /app { proxy_pass http://127.0.0.1:7070; } }
Die URL des Servers, der als Proxy fungieren soll, wird mit der proxy_pass-Direktive proxy_pass festgelegt. Dies ermöglicht die Verwendung von HTTP oder HTTPS:
- als Protokoll;
- Bereich;
- IP-Adresse;
- optionaler Anschluss;
- einheitlicher Ressourcenbezeichner als Adresse.
Die obige Konfiguration weist Nginx an, alle /app-Anfragen an den Proxy-Server unter http://127.0.0.1:7070 weiterzuleiten. Sie können sie auf die gewünschte IP ändern. Diese Angaben dienen nur als Referenz.
Die Serverblockdateien werden in /etc/nginx/sites-available gespeichert - wenn Sie Ubuntu oder Debian verwenden, und in /etc/nginx/conf.d, wenn Sie CentOS verwenden.
Zur Veranschaulichung der Funktionsweise von proxy_pass und der proxy_pass-Direktive sehen wir uns ein einfaches Beispiel an:
server { listen 80; server_name www.example.com example.com; location /blog { proxy_pass http://node1.com:6000/wordpress/; } }
Wenn ein Besucher http://example.com/blog/my-post aufruft, leitet der Nginx-Webserver diese Anfrage an http://node1.com:6000/wordpress/my-post weiter.
Enthält die Adresse des Proxyservers einen einheitlichen Ressourcenbezeichner ( /wordpress/ ), wird der zum Proxyserver übersetzte URI der Anfrage durch den in der Richtlinie angegebenen URI ersetzt. Wird die Adresse des Proxy-Servers ohne eine einheitliche Ressourcenkennung angegeben, wird der vollständige URI der Anfrage an den Proxy-Server weitergeleitet.
Wie man Nginx als Reverse-Proxy für einen Nicht-HTTP-Proxy konfiguriert
Zu diesem Zweck wird eine der vier Richtlinien verwendet:
- fastcgi_pass – Reverse-Proxy zum FastCGI-Server.
- uwsgi_pass – Reverse-Proxy zum uwsgi-Server.
- scgi_pass – Reverse-Proxy zum SCGI-Server.
- memcached_pass – Reverse-Proxy zum Memcached-Server.
Es ist zum Beispiel sehr üblich, dass Nginx PHP-FPM als Reverse-Proxy verwendet:
server { # ... other directives location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.2-fpm.sock; } }
Wenn Sie die Konfigurationsdatei ändern, müssen Sie den Nginx-Webserver neu starten, damit die Änderungen wirksam werden. Wenn Sie Fragen haben, wenden Sie sich bitte per Live-Chat an unsere Spezialisten.