Unterschiede zwischen proxy_pass in zwei Modulen in nginx

Unterschiede zwischen proxy_pass in zwei Modulen in nginx

1. Die proxy_pass -Direktive des Moduls 1.ngx_stream_proxy_module

Es kann nur im Serversegment verwendet werden und erfordert lediglich den Domänennamen oder die IP-Adresse und den Port.

Es kann als Portweiterleitung verstanden werden, die entweder ein TCP-Port oder ein UDP-Port sein kann.

Server {
    hören Sie 127.0.0.1:12345;
    Proxy-Passwort 127.0.0.1:8080;
}
 
Server {
    hören Sie 12345;
    Proxy-Verbindungstimeout 1 s;
    Proxy_Timeout 1m;
    Proxy_Pass Beispiel.com:12345;
}
 
Server {
    hören Sie 53 udp;
    Proxy_Antworten 1;
    Proxy_Timeout 20 s;
    Proxy-Passwort dns.example.com:53;
}
 
Server {
    hören Sie [::1]:12345;
    Proxy_Pass Unix:/tmp/stream.socket;

2. Die proxy_pass -Direktive des Moduls 2.ngx_http_proxy_module

  • Es muss im Standortsegment, im if-Segment im Standort und im limit_except-Segment verwendet werden.
  • Dabei wird neben dem Domänennamen bzw. der IP-Adresse und dem Port auch das Protokoll, beispielsweise „http“ oder „https“, benötigt.
  • Es gibt auch eine optionale URI, die konfiguriert werden kann.

3. Analyse der URL (request_uri) des Backend-Servers nach proxy_pass

Server {
    hören Sie 80;
    Servername www.test.com;
 
    # Szenario A
    # Besuchen Sie http://www.test.com/testa/aaaa
    # Die Backend-Anforderungs-URI lautet: /testa/aaaa
    Standort ^~ /testa/ {
        Proxy-Passwort http://127.0.0.1:8801;
    }
    
    # Szenario B
    # Besuchen Sie http://www.test.com/testb/bbbb
    # Die Backend-Anforderungs-URI lautet: /bbbb
    Standort ^~ /testb/ {
        Proxy-Passwort http://127.0.0.1:8801/;
    }
 
    # Szenario C
    # Der folgende Speicherort ist korrekt ~ /testc {
        Proxy-Passwort http://127.0.0.1:8801;
    }
 
    # Szenario D
    # Der folgende Standort ist falsch#
    # Beim Ausführen von nginx -t wird der folgende Fehler gemeldet: 
    #
    # nginx: [emerg] „proxy_pass“ kann keinen URI-Teil an der durch regulären Passcode angegebenen Stelle haben 
    # Ausdruck, oder innerhalb eines benannten Ortes, oder innerhalb einer "if"-Anweisung, oder innerhalb 
    # "limit_except"-Block in /opt/app/nginx/conf/vhost/test.conf:17
    # 
    # Wenn der Standort ein regulärer Ausdruck ist, darf der Proxy-Pass keinen URI-Teil enthalten. Dieses Beispiel enthält "/"
    Standort ~ /testd {
        proxy_pass http://127.0.0.1:8801/; # Denken Sie daran: Wenn es sich bei „location“ um einen regulären Ausdruck handelt, können Sie ihn nicht so schreiben! ! !
    }
 
    # Szenario E
    # Besuchen Sie http://www.test.com/ccc/bbbb
    # Die Backend-Anforderungs-URI lautet: /aaa/ccc/bbbb
    Standort /ccc/ {
        Proxy-Passwort http://127.0.0.1:8801/aaa$request_uri;
    }
 
    # Szenario F
    # Besuchen Sie http://www.test.com/namea/ddd
    # Die Backend-Anforderungs-URI lautet: /yongfu?namea=ddd
    Standort /namea/ {
        Umschreiben von /namea/([^/]+) /yongfu?namea=$1; Unterbrechung;
        Proxy-Passwort http://127.0.0.1:8801;
    }
 
    # Szenario G
    # Besuchen Sie http://www.test.com/nameb/eee
    # Die Backend-Anforderungs-URI lautet: /yongfu?nameb=eee
    Standort /nameb/ {
        Umschreiben /nameb/([^/]+) /yongfu?nameb=$1 Unterbrechung;
        Proxy-Passwort http://127.0.0.1:8801/;
    }
 
    Zugriffsprotokoll /data/logs/www/www.test.com.log;
}
 
Server {
    hören Sie 8801;
    Servername www.test.com;
    
    Wurzel /data/www/test;
    Index: Index.php; Index.html;
 
    schreibe ^(.*)$ /test.php?u=$1 last um;
 
    Standort ~ \.php$ {
        versuche_dateien $uri =404;
        fastcgi_pass unix:/tmp/php-cgi.sock;
        fastcgi_index index.php;
        fastcgi.conf einschließen;
    }
 
    Zugriffsprotokoll /data/logs/www/www.test.com.8801.log;
}

Dies ist das Ende dieses Artikels über den Unterschied zwischen den beiden Proxy_Pass-Modulen in Nginx. Weitere relevante Inhalte zum Proxy_Pass-Modul von Nginx finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung der verschiedenen Verwendungen von proxy_pass in nginx
  • Zusammenfassung der Konfigurationsprobleme von Nginx-Standort und Proxy-Pass-Pfad
  • Detaillierte Erklärung des Unterschieds zwischen URL-Endungen mit / und ohne / in der Proxy_Pass-Konfiguration von Nginx
  • Proxy_pass-Methode in mehreren if in Nginx-Standorten
  • Implementierung von proxy_pass im Nginx-Reverse-Proxy

<<:  10 sehr gute CSS-Fähigkeiten sammeln und teilen

>>:  Einführung von ECharts in das Vue-Projekt

Artikel empfehlen

Erste Schritte mit Mysql - SQL-Ausführungsprozess

Inhaltsverzeichnis 1. Prozess 2. Kernarchitektur ...

So zeigen Sie verfügbare Netzwerkschnittstellen in Linux an

Vorwort Die häufigste Aufgabe nach der Installati...

JavaScript implementiert eine Eingabefeldkomponente

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Erklärung zur Verwendung des Grep-Befehls in Linux

Linux-Grep-Befehl Mit dem Linux-Befehl grep könne...

Beispiel für die Einrichtung eines mehrspaltigen Layouts gleicher Höhe mit CSS

Mehrere Spalten haben zunächst unterschiedliche I...

Implementierung der Fastdfs+Nginx-Clusterkonstruktion

1. Einführung in Fastdfs 1. Was ist Fastdfs? Fast...