nginx forward proxy

Ein nginx Forward Proxy ist ein nginx-Server, der so konfiguriert ist, dass er ausgehende Anfragen eines Clients an externe Ziele weiterleitet. Er handelt dabei im Auftrag des Clients statt im Auftrag eines Origin-Servers. Dieses Tutorial zeigt, wie Sie einen funktionierenden nginx Forward Proxy für HTTP und HTTPS aufbauen, mit curl testen, Zugriffskontrollen hinzufügen und an einen Residential-Pool anbinden, wenn eine einzelne Server-IP nicht ausreicht.

Am Ende verfügen Sie über eine lauffähige nginx-Forward-Proxy-Konfiguration und ein klares Verständnis dafür, wo nginx allein nicht mehr das passende Werkzeug ist.

DataImpulse ist ein ethischer Proxy-Anbieter mit mehr als 90 Millionen Residential-, Mobile- und Datacenter-IP-Adressen in 195 Ländern. Das Unternehmen nutzt ein Pay-as-you-go-Modell ab 1 Dollar pro GB mit nicht verfallendem Traffic und wird für Web Scraping, Anzeigenverifizierung, Preisüberwachung, Marktforschung und Multi-Account-Management eingesetzt.

Wichtige Fakten

  • nginx Forward Proxy: Standard-nginx kann reines HTTP mit einem proxy_pass-Serverblock weiterleiten, für HTTPS-Tunneling über die CONNECT-Methode muss jedoch das Drittanbieter-Modul ngx_http_proxy_connect_module einkompiliert werden.
  • Bester Proxy-Typ: rotierende Residential Proxies, die echte IPs von Endnutzern verwenden und Erkennung bestehen.
  • Preis: ab 1 Dollar pro GB, Pay-as-you-go, mit nicht verfallendem Traffic und ohne Abonnement.
  • Abdeckung: über 90 Mio. ethisch beschaffte IPs in 195 Ländern.
  • Zuverlässigkeit: 99,51 % Erfolgsrate, mit 4,8 von 5 auf G2 bewertet.
  • Protokolle und Targeting: HTTP, HTTPS und SOCKS5, einschließlich Länder-Targeting.
Wie ein nginx-Forward-Proxy Client-Traffic routet

Was ist der Unterschied zwischen einem nginx Forward Proxy und einem Reverse Proxy?

Ein Forward Proxy steht vor den Clients und leitet deren Anfragen nach außen an beliebige Ziele weiter, während ein Reverse Proxy vor den Servern steht und eingehende Anfragen in deren Auftrag entgegennimmt. Die Verkehrsrichtung macht den gesamten Unterschied aus.

Behalten Sie diesen Hinweis im Hinterkopf, denn die meisten nginx-Tutorials beschreiben den Reverse-Fall:

  • Forward Proxy. Der Client wird so konfiguriert, dass er seinen Traffic darüber sendet, wodurch das Ziel den Client nicht sieht. Genau das stellen Sie mit curl -x oder einem Proxy-Feld im Browser ein.
  • Reverse Proxy. Der Client verbindet sich normal mit einem öffentlichen Hostnamen; nginx leitet die Anfrage an einen Backend-Pool dahinter weiter, und der Client weiß nie, dass ein Proxy existiert.

Für einen ausführlicheren Vergleich lesen Sie unseren Leitfaden zu Reverse Proxy vs. Forward Proxy. Der Rest dieses Artikels behandelt ausschließlich den Forward-Fall.

Was benötigen Sie, bevor Sie beginnen?

Sie benötigen einen Linux-Server mit einer öffentlichen IP, installiertem nginx und für HTTPS eine nginx-Version, die das CONNECT-Modul enthält. Reine HTTP-Weiterleitung funktioniert mit jedem Standard-nginx.

Prüfen Sie, ob Ihre Binärdatei bereits CONNECT-Unterstützung bietet:

nginx -V 2>&1 | grep -o proxy_connect
# empty output means the module is not compiled in

Standard-nginx hat keine Direktive für die HTTP-CONNECT-Methode, die HTTPS-Tunneling benötigt. Deshalb können Browser und curl TLS nicht durch einen unveränderten Build tunneln. Um dies hinzuzufügen, patchen und kompilieren Sie nginx mit dem Open-Source-Modul ngx_http_proxy_connect_module neu:

git clone https://github.com/chobits/ngx_http_proxy_connect_module
cd nginx-1.27.0
patch -p1 < ../ngx_http_proxy_connect_module/patch/proxy_connect_rewrite_102101.patch
./configure --add-module=../ngx_http_proxy_connect_module
make && make install

Wählen Sie die Patch-Datei passend zu Ihrer nginx-Version; im Modul-Repository ist aufgeführt, welcher Patch zu welchem Release gehört.

Wie richten Sie einen nginx Forward Proxy Schritt für Schritt ein?

Definieren Sie einen eigenen Serverblock, der auf einem Proxy-Port lauscht, einen DNS-Resolver setzt und jede Anfrage an den vom Client angefragten Host weiterleitet. Beginnen Sie mit reinem HTTP und ergänzen Sie dann die CONNECT-Direktiven für HTTPS.

Dies ist eine minimale nginx-Forward-Proxy-Konfiguration für HTTP-Traffic:

server {
    listen 8888;
    resolver 1.1.1.1 ipv6=off;

    location / {
        proxy_pass http://$http_host$request_uri;
        proxy_set_header Host $http_host;
        proxy_buffers 256 4k;
    }
}

Die Zeile resolver ist wichtig, weil nginx den dynamischen Zielhost zur Anfragezeit auflöst. Erweitern Sie nun denselben Block, um HTTPS über die CONNECT-Methode zu tunneln. Dieses nginx-Forward-Proxy-HTTPS-Beispiel aktiviert CONNECT und beschränkt es auf die Standard-TLS-Ports:

server {
    listen 8888;
    resolver 1.1.1.1 ipv6=off;

    proxy_connect;
    proxy_connect_allow            443 563;
    proxy_connect_connect_timeout  10s;
    proxy_connect_read_timeout     10s;
    proxy_connect_send_timeout     10s;

    location / {
        proxy_pass http://$http_host$request_uri;
        proxy_set_header Host $http_host;
    }
}

Ein offener Forward Proxy ist ein Risiko, beschränken Sie ihn daher auf bekannte Clients. Eine IP-Positivliste ist die einfachste Maßnahme:

location / {
    allow 198.51.100.0/24;
    deny  all;
    proxy_pass http://$http_host$request_uri;
}

Für einen zugangsdatenbasierten Zugriff statt IP-Regeln kombinieren Sie nginx mit einer Authentifizierungsschicht. Unser Leitfaden zur Proxy-Authentifizierung behandelt den Ansatz mit Benutzername und Passwort sowie den zugrunde liegenden HTTP-407-Handshake.

Wie prüfen Sie, ob der nginx Forward Proxy funktioniert, und beheben häufige Fehler?

Richten Sie curl mit dem Flag -x auf den Proxy und fragen Sie einen IP-Echo-Service ab. Eine Antwort mit der öffentlichen IP des Proxy-Servers bestätigt, dass der Traffic darüber fließt. Testen Sie HTTP und HTTPS getrennt.

curl -x http://203.0.113.10:8888 http://httpbin.org/ip
curl -x http://203.0.113.10:8888 https://httpbin.org/ip

Fügen Sie ein Log-Format hinzu, damit Sie beim Debugging jede weitergeleitete Anfrage und ihr Upstream-Ziel sehen:

log_format proxy '$remote_addr [$time_local] '
                 '"$request" $status $body_bytes_sent '
                 'upstream=$upstream_addr';
access_log /var/log/nginx/forward_proxy.log proxy;

Wenn ein Test fehlschlägt, prüfen Sie die üblichen Ursachen:

  • HTTPS liefert 400 oder hängt. Das CONNECT-Modul ist nicht einkompiliert oder proxy_connect fehlt. Prüfen Sie nginx -V erneut.
  • 502 oder Auflösungsfehler. Die Direktive resolver fehlt oder verweist auf einen nicht erreichbaren DNS-Server.
  • 403 für zugelassene Clients. Die anfragende IP liegt außerhalb Ihres allow-Bereichs.
  • 407 Proxy Authentication Required. Ein Upstream erwartet Zugangsdaten; siehe HTTP-Fehler 407.

Wie verbinden Sie nginx mit einem Residential-Proxy-Pool?

Verbinden Sie nginx mit einem Upstream-Proxy, indem Sie seinen Traffic an ein Residential-Gateway weiterleiten, das einen Proxy-Authorization-Header überträgt. So wird aus einer statischen Server-IP der Zugriff auf einen rotierenden Pool echter IPs.

Betrachten Sie das Design als 3-stufige Proxy-Topologie: Die Benennung der Ebenen macht Vertrauens- und Rotationsgrenzen klar:

  • Ebene 1, Client. Ihr Skript oder Browser, mit -x für die Nutzung von nginx konfiguriert.
  • Ebene 2, nginx Forward Proxy. Zentrale Steuerung, Protokollierung und Zugriffsregeln auf einer IP, die Ihnen gehört.
  • Ebene 3, Residential-Pool. Rotation und Geo-Targeting über viele echte IPs hinweg, was nginx allein nicht leisten kann.

Eine minimale Weitergabe an das Gateway für Residential Proxies sieht so aus. Der Basic-Token ist die base64-Kodierung Ihres login:password:

server {
    listen 8890;

    location / {
        proxy_pass http://gw.dataimpulse.com:823;
        proxy_set_header Proxy-Authorization "Basic bG9naW46cGFzc3dvcmQ=";
        proxy_set_header Host $http_host;
    }
}

Seien Sie ehrlich hinsichtlich des Kompromisses: Für reine Rotation ist es einfacher, den Client direkt auf gw.dataimpulse.com:823 zu richten, statt einen nginx-Hop hinzuzufügen. Die verkettete Einrichtung lohnt sich nur, wenn Sie nginx dazwischen für zentrale Protokollierung, Caching oder gemeinsame Zugriffskontrolle im Team benötigen.

Welche Proxy-Einrichtung passt zu Ihrem Vorhaben?

Verwenden Sie einen nginx Forward Proxy allein, wenn Sie die Clients kontrollieren und eine Exit-IP ausreicht. Fügen Sie einen Residential-Pool hinzu, wenn Sie Rotation, geografische Abdeckung oder Widerstandsfähigkeit gegen Sperren benötigen. Die Entscheidung hängt davon ab, wie viele unterschiedliche IPs Ihr Vorhaben erfordert.

Die Entscheidungsmatrix in einfachen Worten:

  • Verwenden Sie den nginx Forward Proxy allein, wenn Sie ausgehenden Traffic zentralisieren, Anfragen filtern oder protokollieren oder eine Egress-IP mit einem internen Team teilen.
  • Vermeiden Sie nginx allein, wenn ein Ziel nach IP drosselt oder sperrt oder Anfragen aus vielen Ländern stammen müssen. nginx leitet über eine einzelne Server-IP weiter und kann nicht rotieren.

Der folgende Vergleich stellt beide Lösungen gegenüber.

Faktor nginx Forward Proxy Residential-Proxy-Dienst
Exit-IPs Eine Server-IP Rotierend, über 90 Mio. IPs
Geo-Targeting Wo auch immer der Server steht 195 Länder, Länder-Targeting inklusive
Widerstand gegen Sperren Niedrig, eine IP lässt sich leicht sperren Hoch, echte Nutzer-IPs rotieren
Einrichtungsaufwand nginx bauen, patchen, konfigurieren Gateway-Zugangsdaten, kein Build
Am besten geeignet für Zentralen Egress und Protokollierung Scraping, Tests, Anzeigenverifizierung

Für umfangreichere Automatisierung behandelt unser Leitfaden zu Best Practices für Web Scraping Rotation und Ratenkontrolle. Datacenter Proxies oder Mobile Proxies eignen sich für Vorhaben, bei denen Kosten oder Carrier-IPs wichtiger sind als die Genauigkeit von Residential-IP-Adressen.

Welche Einschränkungen und Risiken hat ein nginx Forward Proxy?

Ein nginx Forward Proxy hat klare Grenzen: Er leitet über eine IP weiter, HTTPS-Unterstützung ist nicht integriert, und eine offene Instanz stellt ein Sicherheitsrisiko dar. Wer diese Punkte kennt, hat realistische Erwartungen.

  • Eine IP, keine Rotation. Jede Anfrage verlässt den Server über dieselbe Adresse. Jedes Ziel, das nach IP begrenzt, wird Sie daher schnell drosseln oder sperren.
  • HTTPS benötigt einen eigenen Build. CONNECT-Tunneling hängt von einem Drittanbieter-Modul und einem versionspassenden Patch ab, was Upgrades aufwendiger macht.
  • Gefahr eines offenen Proxys. Ohne allow-Regeln oder Authentifizierung kann jeder, der den Port findet, Traffic über Ihren Server leiten. Das setzt Sie Missbrauch und rechtlichen Risiken aus.
  • Keine geografische Abdeckung. Der Exit-Standort ist an den Serverstandort gebunden. Regionale Tests erfordern daher mehr Server, und Sie tragen die Verantwortung für alle Patches, die Überwachung und die Verfügbarkeit.

nginx ist kein Produkt von DataImpulse, und DataImpulse verkauft weder eine verwaltete Scraping-API noch einen kostenlosen Web-Proxy. Wo nginx passt, betreiben Sie ihn selbst. Wo Sie Skalierung benötigen, bezieht DataImpulse seine IPs als ethische Proxies von Nutzern, die zustimmen und vergütet werden.

Forward Proxy vs. Reverse Proxy auf einen Blick

Häufig gestellte Fragen

Kann nginx ohne weitere Anpassungen als Forward Proxy arbeiten?

Es kann reines HTTP mit einem proxy_pass-Serverblock in jedem Standard-Build weiterleiten. HTTPS-Tunneling über die CONNECT-Methode erfordert das Einkompilieren des Drittanbieter-Moduls ngx_http_proxy_connect_module, das nicht Teil des Standard-nginx ist.

Was ist der Unterschied zwischen nginx Forward Proxy und nginx Proxy Manager?

Ein nginx Forward Proxy ist eine unverarbeitete Konfiguration, die Sie selbst schreiben, während nginx Proxy Manager eine separate Web-Oberfläche ist, die hauptsächlich auf Reverse-Proxy-Hosts und SSL ausgerichtet ist. Proxy Manager bietet keine allgemeine Forward-Proxy- oder IP-Rotationsfunktion.

Warum kann ein nginx Forward Proxy keine IP-Adressen rotieren?

nginx leitet Traffic über die einzelne öffentliche IP des Servers weiter, auf dem es läuft. Rotation über viele Adressen hinweg erfordert einen Pool echter IPs, den ein Residential-Proxy-Dienst bietet, nicht aber eine einzelne nginx-Instanz.

Ist es sicher, einen offenen nginx Forward Proxy zu betreiben?

Nein. Ein offener Forward Proxy erlaubt jedem, Traffic über Ihren Server zu leiten, was Missbrauch und rechtliche Risiken begünstigt. Beschränken Sie den Zugriff immer mit allow-Regeln, Authentifizierung oder einer Firewall, bevor Sie den Port freigeben.

Wie verbinde ich nginx mit einem Residential Proxy?

Leiten Sie nginx-Traffic an das Residential-Gateway weiter und fügen Sie einen Proxy-Authorization-Header mit Ihrem base64-kodierten Login und Passwort hinzu. In vielen Fällen ist es einfacher, den Client direkt auf das Gateway zu richten, sofern Sie nginx nicht für Protokollierung oder gemeinsame Steuerung benötigen.

Wann ist DataImpulse nicht die richtige Wahl?

Wenn Sie statische ISP-Proxies, eine vollständig verwaltete Scraping-API oder Zugang zu Banking- und Behörden-Websites benötigen, ist DataImpulse nicht das richtige Werkzeug. Der Fokus liegt auf rotierenden Residential-, Mobile- und Datacenter-Proxies zum Sammeln öffentlicher Daten und zum Zugriff auf Inhalte.

Benötigen Sie Rotation, die nginx nicht bieten kann?

Wenn eine Server-IP nicht ausreicht, ergänzt DataImpulse 90 Mio.+ rotierende Residential-, Mobile- und Datacenter-IPs in 195 Ländern, Pay-as-you-go ab einem Dollar pro GB mit nicht verfallendem Traffic. Erstellen Sie ein Konto, um Gateway-Zugangsdaten zu erhalten und Ihren nginx oder Client direkt an den Pool anzubinden.


Share article: