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    

Artikel empfehlen

So installieren Sie Docker und Portainer in Kali

Mit dem Aufkommen von Docker haben sich viele Die...

Detaillierte Erläuterung der sieben Wertübertragungsmethoden von Vue

1. Vom Vater zum Sohn Definieren Sie das props Fe...

So erstellen Sie einen SSH-Dienst basierend auf einem Golang-Image in Docker

Nachfolgend finden Sie den Code zum Erstellen ein...

Vue: Zwei Komponenten auf gleicher Ebene erreichen eine Wertübertragung

Vue-Komponenten sind verbunden, daher ist es unve...

Detaillierte Einführung in das benutzerdefinierte Docker-Netzwerk

Inhaltsverzeichnis Benutzerdefiniertes Docker-Net...

Beispiel zum Ändern des Zeilenabstands einer HTML-Tabelle

Bei der Verwendung von HTML-Tabellen müssen wir m...

MySQL 8.0.11 Installations-Tutorial unter Windows

Dieser Artikel zeichnet das Installationstutorial...

CSS-Layout-Tutorial: So erreichen Sie eine vertikale Zentrierung

Vorwort Ich habe kürzlich mein Front-End-Wissen z...

Eine kurze Erläuterung des Navigationsfensters in Iframe-Webseiten

Eine kurze Erläuterung des Navigationsfensters in...

Detaillierte Installation und Verwendung der Virtuoso-Datenbank unter Linux

Ich habe kürzlich einige Dinge zu verknüpften Dat...