Nginx を使用してポート転送 TCP プロキシを実装する例

Nginx を使用してポート転送 TCP プロキシを実装する例

需要背景

最近、同僚がテスト環境と本番環境にそれぞれアプリケーションを展開しました。アプリケーションは LDAP のみを統合でき、当社では AD を使用しているため、OpenLDAP サービスを構築しました。アカ​​ウントは最初に lsc を介して AD から OpenLDAP に同期され、次に saslauthd を使用して認証が AD に渡されます。テスト環境では、アプリケーションは LDAP に接続してログインできますが、本番環境では OpenLDAP サーバーにアクセスできません。本番環境で OpenLDAP サービスのセットを繰り返し再インストールして維持することは望ましくありません。このプロセスは面倒であり、AD アカウントを OpenLDAP と毎日同期するためのスケジュールされたタスクが必要です。したがって、ポート転送によってこれを実現できると思います。ノード間のトポロジは、おおよそ次のようになります。

ここに画像の説明を挿入

Nginx を使用する理由は何ですか?

Baidu でポート転送を検索します。実装方法はたくさんあります。そのほとんどは Iptables を通じて実装されています。ただし、Ubuntu および CentOS サーバーでテストしましたが、機能しませんでした。実装するには Nginx を選択するしかありませんでした。

Nginx によるポート転送

オペレーティング システムが比較的新しい場合は、ソフトウェア ソースを通じて nginx を直接インストールできます。nginx のバージョンが 1.9 より大きい限り、デフォルトで TCP プロキシをサポートします。

nginxがTCPプロキシをサポートしているかどうかを確認する

nginx -V

出力構成パラメータに--with-streamを含めると、nginx が TCP プロキシをサポートしていることを意味します。

依存関係をインストールする

RHEL/CentOS/Fedora

yum インストール -y pcre* openssl*

デビアン/ウブントゥ

apt-get で zlib1g-dev と libpcre++-dev openssl をインストールします。

依存関係をダウンロードする

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

ダウンロードしてインストールする

ソースパッケージをダウンロード

http://nginx.org/download/nginx-1.9.9.tar.gz をダウンロードしてください

解凍

tar -zxf nginx-1.9.9.tar.gz

コンパイルしてインストールする

nginx-1.9.9をインストールします
./configure --prefix=/usr/local/nginx \
  --add-module=/usr/local/src/ngx_cache_purge-2.3 \
  --http_stub_status_module と --stream と連携
作成 && インストールします。

設定ファイルを変更する

nginx.conf は、

イベント {
  ...
}

ストリーム {
    アップストリームLDAP {
        ハッシュ $remote_addr は一貫しています。
        サーバー 192.168.1.8:389;
    }
    サーバー{
        聞く 1389;
        proxy_connect_timeout 5秒;
        proxy_timeout 5秒;
        プロキシパスldap;
    }
}

http {
  ...
}

この例では、ローカルポート1389を192.168.1.8のポート389に転送します。

起動してサービスが正常かどうかを確認します

nginxサービスを開始する

ローカル

nginxプロセスを確認する

netstat -anput | grep nginx

これで、Nginx を使用してポート転送 TCP プロキシの実装例を実装するこの記事は終了です。Nginx ポート転送 TCP プロキシの関連コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Nginx ストリーム構成プロキシ (Nginx TCP/UDP ロード バランシング)
  • nginx は TCP プロキシ サーバーを構築します

<<:  JavaScript 配列メソッドの詳細な例

>>:  MySQLカーソルの詳細な紹介

推薦する

Web ページでの Unicode 文字の使用の概要 (&#、\u など)

初期のコンピュータでは ASCII 文字しか使用できませんでしたが、コンピュータのアプリケーションの...

MySQL 8.0.20 Window10無料インストール版設定とNavicat管理チュートリアルグラフィック詳細説明

1. MySQL 8.0.20をダウンロードして解凍するダウンロードリンク: https://dev...

Win10 構成 Tomcat 環境変数チュートリアル図

設定する前に、次の操作を行う必要があります。 1. まずjdk bloggerをインストールします。...

dockerコンテナがIP経由でホストマシンにアクセスできない問題を解決する方法の詳細な説明

問題の起源docker を使用する場合、残念ながら docker コンテナ内のホストのポート 80 ...

CSS が最初のサイクルで画像を読み込むために @keyframes を使用するときに発生するホワイトギャップの問題 (フラッシュ画面) をすばやく解決します。

問題の説明: CSS アニメーション プロパティを使用すると、ループが最初に読み込まれたときに白いギ...

MySQL 8.0.22.0 のダウンロード、インストール、設定方法のグラフィックチュートリアル

MySQL 8.0.22のダウンロード、インストール、設定方法、参考までに具体的な内容は次のとおりで...

MySQLがOracleのnvlと同様の機能を持つことができるかどうかについての簡単な議論

isnullの代わりにifnullを使用するisnull は、null かどうかを判断するために使用...

モバイル端末におけるビューポートの具体的な使用法についての簡単な説明

目次1. 基本概念1.1 2種類のピクセル1.2 3つのビューポート2. ビューポート設定3. 1回...

Ubuntuのインストール Matlab2020b の詳細なチュートリアルとリソース

目次1. リソースファイル2. インストール2.1 詳細な手順2.1.1 ディスクイメージのマウント...

Web スライスとは何ですか?

IE8 の新機能 Web スライス (Web スライス) Microsoft は 3 月 20 日...

MySQL シャーディング入門ガイド

序文リレーショナル データベースは、システムのボトルネックになる可能性が高くなります。単一のマシンの...

WeChat ミニプログラム ユーザー認証のベストプラクティス ガイド

序文WeChat アプレットを開発する際には、ユーザーの権限が必要なページを使用する必要があることが...

CentOS7 インストール Zabbix 4.0 チュートリアル (イラストとテキスト)

SeLinuxを無効にするsetenforce 0永久に閉店: vi /etc/selinux/c...

MySQL データベース 8 - データベース内の関数の適用の詳細な説明

データベースの組み込み関数の使用この記事では、主に日付関数、文字列関数、数学関数など、データベースの...