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

Beispiel einer Vorrendering-Methode für eine Vue-Einzelseitenanwendung

Inhaltsverzeichnis Vorwort vue-cli 2.0 Version vu...

So entfernen Sie die Trennlinie einer Webseitentabelle

<br />So entfernen Sie die Trennlinien einer...

Verwenden Sie Elasticsearch, um Indexdaten regelmäßig zu löschen

1. Manchmal verwenden wir ES Aufgrund begrenzter ...

Zusammenfassung der Wissenspunkte zum B-Tree-Index bei der MySQL-Optimierung

Warum müssen wir SQL optimieren? Wenn wir SQL-Anw...

Detaillierte Erklärung des dynamischen Weihnachtsbaums durch JavaScript

Inhaltsverzeichnis 1. Animierter Weihnachtsbaum, ...

Informationen zur Installation von Homebrew auf dem Mac

Vor kurzem hat Xiao Ming einen neuen Mac gekauft ...

So erhalten Sie USB-Scannerdaten mit js

In diesem Artikel wird der spezifische Prozess zu...

Detailliertes Beispiel der Lesegeschwindigkeit von JS-Objekten

1. Der Zugriff auf Literale und lokale Variablen ...

So generieren Sie PDFs und laden sie im Vue-Frontend herunter

Inhaltsverzeichnis 1. Installation und Einführung...

Warum sollten Sie mit der add_header-Direktive von Nginx vorsichtig sein?

Vorwort Wie wir alle wissen, legt die Nginx-Konfi...

So ändern Sie den Speicherort von Datendateien in CentOS6.7 mysql5.6.33

Problem: Die Partition, in der MySQL Datendateien...

Apropos „Weniger und mehr“ im Webdesign (Bild)

„Weniger ist mehr“ ist ein Schlagwort vieler Desi...