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

Beispielcode zur Implementierung von Follow Ads mit JavaScript

Floating Ads sind eine sehr verbreitete Form der ...

Allgemeine Befehle für MySQL-Autorisierung, Start und Dienststart

1. Vier Startmethoden: 1.mysqld Starten Sie den M...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.14

Dieser Artikel dokumentiert den Installations- un...

So erstellen Sie Ihr eigenes Image mit Dockerfile

1. Erstellen Sie ein leeres Verzeichnis $ cd /hom...

Typische Fälle von MySQL-Indexfehlern

Inhaltsverzeichnis Typische Fälle Anhang: Häufige...

Lizenzschlüssel für VMware Workstation Pro 16 mit Nutzungs-Tutorial

VMware Workstation ist eine leistungsstarke virtu...

Quickjs kapselt JavaScript-Sandbox-Details

Inhaltsverzeichnis 1. Szenario 2. Vereinfachen Si...

Analysieren Sie den Unterschied zwischen berechnet und beobachtet in Vue

Inhaltsverzeichnis 1. Einführung in die Computert...

HTML+CSS zum Erstellen eines Menüs in der oberen Navigationsleiste

Navigationsleiste erstellen: Technische Vorausset...

Benutzerdefiniertes Auswahlfeld für die Webseite Auswählen

Jeder ist wahrscheinlich mit dem Auswahl-Dropdown...

So installieren Sie Nginx und konfigurieren mehrere Domänennamen

Nginx-Installation CentOS 6.x yum verfügt standar...

MySQL-Fall beim Gruppieren nach Beispiel

Eine MySQL-ähnliche PHP-Switch-Case-Anweisung. wä...