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カーソルの詳細な紹介

推薦する

JSパッケージオブジェクトに関する簡単な説明

目次概要意味インスタンスメソッドプリミティブ型とインスタンスオブジェクト間の自動変換カスタムメソッド...

MySQLクエリデータを時間別に表示します。データがない場合は0を入力してください。

需要背景統計インターフェースでは、フロントエンドは 2 つの配列を返す必要があります。1 つは 0 ...

面接では、select...for update がテーブルをロックするのか、それとも行をロックするのか尋ねられました。

目次確認する:例の検証と組み合わせるselect クエリ ステートメントはロックされませんが、sel...

雨滴効果を実現する JavaScript キャンバス

この記事の例では、雨滴効果を実現するためのキャンバスの具体的なコードを参考までに共有しています。具体...

HTML ページで JSON データを表示およびフォーマットする方法

JSONデータはHTMLページ上に表示されフォーマットされます1. 表示効果図説明:すべてのキー値は...

HTML CSS の 3 つの一般的なスタイル セレクター

1: タグセレクタータグセレクターはすべてのタグに使用されます。ここでは p を例に挙げます。つまり...

JavaScript スロットリングとアンチシェイクに関する簡単な説明

目次スロットルと手ぶれ防止コンセプト:違いスロットリングの実装スロットル機能手ぶれ補正の実装手ぶれ防...

Vue での親子コンポーネント通信と、sync を使用して親子コンポーネント データを同期する

目次序文子コンポーネントは親コンポーネントにデータを渡す1. 親コンポーネントから子コンポーネントに...

MySQL InnoDB ReplicaSet の簡単な紹介

目次01 InnoDBレプリカセットの紹介02 InnoDBレプリカセットの制限03 導入前に知って...

Vue3 で状態管理を実装するために provide を使用する方法

目次序文provide/inject を通じて Vuex 関数を実装する方法このプラグインをアプリケ...

Linux で MySQL 8.0 サービスを完全に削除する方法

この記事を読む前に、Linuxコマンド、特にcentos7.3環境でyumを使用してインストールされ...

背景位置パーセンテージ原則の詳細な説明

今日、誰かがコードを調整するのを手伝っていたとき、次のようなスタイルを見つけました。 背景位置: 5...

IDEA の Docker プラグインを介して SpringBoot プロジェクトをデプロイするプロセスの詳細な説明

1. Dockerリモート接続ポートを設定するサーバー上の docker.service ファイルを...

HTML タグ: サブタグと sup タグ

今日はあまり使わないHTMLタグ「subタグ」と「supタグ」を紹介します。関連記事: HTML タ...

Nginx の負荷分散アルゴリズムとフェイルオーバー分析

概要Nginx ロード バランシングは、アップストリーム サーバー (実際のビジネス ロジックによっ...