Wie verwende ich Nginx als HTTP / HTTPS-Proxy-Server? [geschlossen]


15

Ist es möglich, Nginx als HTTP / HTTPS-Proxy zu verwenden?

Antworten:


13

Nach einigen Tests habe ich festgestellt , dass die folgende Konfiguration für mich funktioniert .

server {
  server_name ~^(www\.)?(?<domain>.+)$;
  access_log /var/log/nginx/proxy.access.log main;
  error_log /var/log/nginx/proxy.error.log crit;
  listen 10.255.1.13:8080;
  resolver 8.8.8.8;
  location / {
    proxy_pass http://$domain;
    proxy_redirect off;
    proxy_set_header Host $host;
    # Optional headers 
    # proxy_set_header X-Real-IP $remote_addr;
    # proxy_set_header X-Forwarded-For
    # $proxy_add_x_forwarded_for;
  }
}

Diese Konfiguration funktioniert nur für HTTP, nicht für HTTPS.


4
Gut gemacht! Einige Hinweise. 1: listen ... default_server. 2: server_name ""oder server_name _. 2: proxy_pass $scheme://$http_host. Die Einschränkungen: Poxen auf Upstreams nur mit Port 80; verarbeitet keine Weiterleitungen selbst.
Alexander Azarov

$ scheme ist nur nützlich, wenn der vhost auch https abhört - aber dann haben Sie ein mittleres Risiko für Menschen und müssen mit https-Zertifikatsfehlern
fertig werden

7

Ich denke, die kurze Antwort ist nein, sie wurde nicht für Forward Proxying geschrieben

AKTUALISIEREN

Um meine Aussage zu verdeutlichen:

NGINX wurde nie mit Blick auf Forward-Proxying geschrieben - obwohl es aus der Ferne möglich ist, die Konfiguration irgendwie zu manipulieren, um das zu tun, was Sie wollen, müssen Sie die folgenden Einschränkungen verstehen:

  • Cache-Unterstützung fast nicht vorhanden (einer der Hauptgründe für die Verwendung eines Proxys)
  • Kann nicht für etwas anderes als Port 80-Verkehr verwendet werden (dh keine Anmeldung in Cpanel-Boxen durch ihn)
  • Keine Unterstützung für SSL-basierten Datenverkehr
  • Keine Unterstützung für Standard-Proxy-Header und HTTP-Cache-Header (nach meinem Verständnis werden diese nur durchgereicht)
  • Keine Unterstützung für andere Protokolle, die Proxy - Server unterstützen - zB VPN etc

Mögliche andere Überlegungen, die derzeit nicht bekannt sind:

  • Möglich, Ihren Proxy als keine echte Fähigkeit zur differenzierten Zugriffskontrolle / -authentifizierung zu definieren (nginx unterstützt unterschiedliche Methoden der Zugriffskontrolle, es ist jedoch unklar, wie sich diese im Forward-Proxy-Kontext verhalten könnten).
  • Mögliche Sicherheitsrisiken für den Computer, auf dem nginx installiert ist, da möglicherweise Sicherheitslücken bestehen, die nicht berücksichtigt werden, weil er nicht für den Betrieb vorgesehen ist


vielleicht sollte meine Antwort klarer sein können es war nicht entworfen , nach vorn zu tun Proxying - Affe Patch Bemühungen nicht voll Proxy - Unterstützung wie Proxying Anfragen an Nicht - Standard (Port 80) Ports bieten
anthonysomerset

3

Wenn Sie einen HTTP / HTTPS-Proxy verwenden möchten, sollten Sie Squid verwenden. Es wurde geschrieben, um genau das zu tun. Nginx wurde als Reverse-Proxy und Load-Balancer entwickelt, jedoch nicht als Forward-Proxy.


Ich kenne mich mit Tintenfisch / oops / tinyproxy / etc aus. Ich stelle diese Frage nur aus Gründen des akademischen Interesses
vlad
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.