Beispiel für die Verwendung von Nginx zur Implementierung eines TCP-Proxys mit Portweiterleitung

Beispiel für die Verwendung von Nginx zur Implementierung eines TCP-Proxys mit Portweiterleitung

Nachfragehintergrund

Kürzlich hat ein Kollege eine Anwendung in der Test- bzw. Produktionsumgebung bereitgestellt. Da die Anwendung nur LDAP integrieren kann und unser Unternehmen AD verwendet, habe ich einen OpenLDAP-Dienst erstellt. Das Konto wird zuerst über lsc von AD mit OpenLDAP synchronisiert, und dann wird saslauthd verwendet, um die Authentifizierung an AD weiterzugeben. In der Testumgebung kann unsere Anwendung eine Verbindung zu LDAP herstellen, um sich anzumelden, aber in der Produktionsumgebung kann sie nicht auf den OpenLDAP-Server zugreifen. Ich möchte in der Produktionsumgebung nicht wiederholt eine Reihe von OpenLDAP-Diensten neu installieren und warten. Dieser Vorgang ist umständlich und erfordert eine geplante Aufgabe, um das AD-Konto jeden Tag mit OpenLDAP zu synchronisieren. Ich denke also, dass dies durch Portweiterleitung erreicht werden kann. Die Topologie zwischen den Knoten sieht ungefähr wie folgt aus.

Bildbeschreibung hier einfügen

Warum Nginx verwenden?

Suchen Sie auf Baidu nach Portweiterleitung. Es gibt viele Möglichkeiten, dies umzusetzen. Die meisten davon werden über Iptables implementiert. Ich habe es jedoch auf Ubuntu- und CentOS-Servern getestet und es hat nicht funktioniert. Mir blieb nichts anderes übrig, als Nginx für die Implementierung auszuwählen.

Portweiterleitung mit Nginx

Wenn unser Betriebssystem relativ neu ist, können wir nginx direkt über die Softwarequelle installieren. Solange die nginx-Version höher als 1.9 ist, unterstützt es standardmäßig TCP-Proxy.

Überprüfen Sie, ob Nginx TCP-Proxy unterstützt

nginx -V

Wenn wir --with-stream in die Ausgabekonfigurationsparameter einschließen, bedeutet dies, dass nginx TCP-Proxy unterstützt.

Abhängigkeiten installieren

RHEL/CentOS/Fedora

yum install -y pcre* openssl*

Debian/Ubuntu

apt-get install zlib1g-dev libpcre++-dev openssl

Abhängigkeiten herunterladen

wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
tar -zxvf ngx_cache_purge-2.3.tar.gz -C /usr/local/src

Herunterladen und installieren

Quellpaket herunterladen

wget http://nginx.org/download/nginx-1.9.9.tar.gz

Entpacken

tar -zxf nginx-1.9.9.tar.gz

Kompilieren und installieren

cd nginx-1.9.9
./configure --prefix=/usr/local/nginx \
  --add-module=/usr/local/src/ngx_cache_purge-2.3 \
  --mit-http_stub_status_module --mit-stream
machen && machen installieren;

Ändern der Konfigurationsdatei

/usr/local/nginx/conf/nginx.conf

Ereignisse {
  ...
}

Strom {
    Upstream-LDAP {
        Hash $remote_addr konsistent;
        Server 192.168.1.8:389;
    }
    Server {
        hören Sie 1389;
        Proxy-Verbindungs-Timeout 5 s;
        Proxy_Timeout 5 s;
        Proxy_Passwort LDAP;
    }
}

http {
  ...
}

In diesem Beispiel leiten wir den lokalen Port 1389 an Port 389 auf 192.168.1.8 weiter.

Starten Sie und prüfen Sie, ob der Dienst normal ist

Starten Sie den Nginx-Dienst

/usr/local/nginx/sbin/nginx

Überprüfen Sie den Nginx-Prozess

netstat -anput | grep nginx

Damit ist dieser Artikel über die Verwendung von Nginx zur Implementierung von Beispielen für die Portweiterleitung von TCP-Proxys abgeschlossen. Weitere verwandte Inhalte zu Nginx-Portweiterleitungs-TCP-Proxys 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:
  • Nginx-Stream-Konfigurationsproxy (Nginx TCP/UDP-Lastausgleich)
  • nginx erstellt einen TCP-Proxyserver

<<:  Beispielcode für CSS3 zum Erzielen eines Bildlaufleisten-Verschönerungseffekts

>>:  Detaillierte Einführung zum MySQL-Cursor

Artikel empfehlen

MySQL Server 8.0.13.0 Installations-Tutorial mit Bildern und Text

Installieren Sie 8.0.13 basierend auf MySQL 6.1.3...

Detaillierte Erläuterung der Js-Klassenkonstruktion und Vererbungsfälle

Die Definition und Vererbung von Klassen in JS si...

Vue implementiert horizontales Scrollen von Text im Laufschriftstil

In diesem Artikel wird der spezifische Code für V...

So erstellen Sie ein React-Projekt mit Vite

Inhaltsverzeichnis Vorwort Erstellen Sie ein Vite...

Detaillierte Verwendung des Kubernetes-Objektvolumens

Überblick Volume ist die Abstraktion und Virtuali...

Detaillierte Erklärung von MySQL Explain

Bei unserer täglichen Arbeit führen wir manchmal ...

Anwendungsbeispiele für die try_files-Direktive von Nginx

Die Konfigurationssyntax von Nginx ist flexibel u...

Unterschiede zwischen Windows Server 2008R2, 2012, 2016 und 2019

Inhaltsverzeichnis Allgemeine Versionseinführung ...

Zusammenfassung zur Verwendung des MySQL-Autorisierungsbefehls „grant“

So verwenden Sie den MySQL-Autorisierungsbefehl „...

Tiefgreifendes Verständnis der verschiedenen Sperren von MySQL

Inhaltsverzeichnis Schlossübersicht Sperrklassifi...

Detaillierte Erklärung der Filter und Anweisungen in Vue

Inhaltsverzeichnis benutzerdefinierte Vue-Direkti...

So verwenden Sie den CocosCreator-Objektpool

Inhaltsverzeichnis Vorwort: Spezifische Operation...