Neben Apache ist Nginx der beliebteste verfügbare Webserver. Er kann nicht nur als Webserver, sondern auch als Load Balancer oder Reverse-Proxy verwendet werden. In diesem Tutorial zeigt Ihnen Quantrimang.com , wie Sie Nginx als Reverse-Proxy verwenden können.
Was ist ein Reverse-Proxy?
Ein Proxyserver fungiert als Vermittler zwischen einem Client und einem anderen Server. Der Proxyserver ruft Ressourcen von dem Server ab, mit dem Sie eine Verbindung herstellen möchten, und sendet sie Ihnen zur Ansicht. Ein Reverse-Proxy funktioniert auf die gleiche Weise, außer dass die Rollen vertauscht sind. Wenn Sie Informationen vom Server anfordern, speichert der Reverse-Proxy die Anfrage und sendet sie an den entsprechenden Backend-Server. Dadurch können Systemadministratoren den Server für mehrere Anwendungen nutzen und einen reibungsloseren Datenverkehrsfluss zwischen Client und Server gewährleisten.
Vorteile von Reverse-Proxys
Abhängig von Ihrer Anwendung können unterschiedliche Reverse-Proxy-Anwendungsfälle vorliegen.
- Mit einem Reverse-Proxy können Sie mehrere Anwendungen auf demselben Server ausführen . Wenn mehrere Anwendungen auf demselben Server ausgeführt werden, können diese nicht alle gleichzeitig auf Port 80 oder 433 „lauschen“. Mit einem Reverse-Proxy können Sie ihn konfigurieren um den Datenverkehr bei Bedarf an einzelne Anwendungen umzuleiten.
- Lastausgleich – Wenn auf mehreren Servern dieselbe Anwendung ausgeführt wird, können Sie einen Reverse-Proxy verwenden, um den Datenverkehr gleichmäßig auf jeden Server zu verteilen.
- Webanwendungs-Firewall – Sie können Reverse-Proxy verwenden, um Ihre Anwendung zu verbergen und auch Spam-IPs zu filtern oder vor DDOS-Angriffen zu schützen .
- Einfache Protokollierung und Prüfung – Da der gesamte eingehende Datenverkehr von einem Reverse-Proxy verwaltet wird, ist es einfacher, Verkehrsströme zu protokollieren und zu überwachen.
Konfigurieren Sie Nginx als Reverse-Proxy
Um Nginx als Reverse-Proxy einzurichten, verwendet der Artikel den Parameter „proxy_pass“ in der Nginx-Konfigurationsdatei.
Hinweis : In diesem Tutorial wird davon ausgegangen, dass Sie über Nginx-Kenntnisse verfügen und Nginx auf Ihrem Server installiert und eingerichtet haben.
In den meisten Anwendungsfällen fungiert Nginx als Front-End-Server und „horcht“ auf Port 80 (HTTP) oder 443 (HTTPS) auf eingehende Anfragen. Da es nur einen Dienst geben kann, der auf Port 80 oder 443 „lauscht“, muss Ihre Anwendung auf einem anderen Port „lauschen“, beispielsweise Port 8081. Die einfachste Konfiguration sieht folgendermaßen aus:
server {
listen 80;
listen [::]:80;
server_name myapp.com;
location / {
proxy_pass http://localhost:8081/;
}
}
Das bedeutet, dass alle Anfragen an myapp.com an Port 80 an Port 8081 umgeleitet werden .
Erweiterte Einstellungen
Zusätzlich zur Proxy_pass-Direktive gibt es mehrere andere Direktiven , die Sie für eine erweiterte Einrichtung verwenden können.
- Proxy_set_header – Damit können Sie einen Header festlegen, der an die Hintergrundanwendung gesendet wird. Sehen Sie sich beispielsweise die folgende Konfiguration an:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Sie können die erforderlichen Proxy-Header für die Weitergabe an die Anwendung festlegen, ihr die Anforderungs-IP und die Remote-Adresse mitteilen und dann den korrekten Inhalt an die anfordernde Website ausgeben.
- Proxy-Timeout – Hier können Sie den Timeout-Wert für das Senden und Empfangen von Proxy-Anfragen festlegen. Zum Beispiel:
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
- Proxy_Buffers – Dadurch kann Nginx die Antwort des Proxyservers vorübergehend zurückhalten und sie erst an den anfragenden Server senden, nachdem der Proxyserver mit der Antwort fertig ist. Zum Beispiel:
proxy_buffers 32 4k;
Wenn Ihre Anwendung eine große Anzahl von Dateien sendet, möchten Sie möglicherweise Proxy_Buffers deaktivieren:
proxy_buffering off;
Wie Sie sehen, ist Nginx ein Reverse-Proxy-Server mit vielen Einsatzmöglichkeiten. Das größte Plus daran ist, dass es einfach zu konfigurieren und zu verwenden ist und Ihnen dennoch die Skalierung in komplexeren Szenarien ermöglicht. Weitere Einzelheiten finden Sie in der Dokumentation zum Nginx-Proxy-Modul (unter https://nginx.org/en/docs/http/ngx_http_proxy_module.html) oder in den Konfigurationsbeispielen (unter https://www.nginx.com/resources/wiki). /start/topics/examples/full/).
Ich hoffe, Sie haben Erfolg.