Nginx リバース プロキシを使い始める

Nginx リバース プロキシを使い始める

概要

Nginx リバース プロキシ: リバース プロキシとは、サーバーがクライアントの要求に基づいて 1 つ以上のバックエンド サーバー グループ (Web サーバーなど) からリソースを取得し、それらのリソースをクライアントに返すことを意味します。クライアントはリバース プロキシの IP アドレスのみを認識しますが、プロキシ サーバーの背後にあるサーバー クラスターの存在は認識しません。

リバースプロキシの役割

  • サーバー(クラスター)のIPアドレスをクライアントから隠す
  • セキュリティ: アプリケーション層ファイアウォールとして、Web ベースの攻撃 (DoS/DDoS など) から Web サイトを保護し、マルウェアの検出を容易にします。
  • バックエンドサーバー(クラスター)に統合暗号化と SSL アクセラレーション(SSL ターミナルプロキシなど)を提供する
  • 負荷分散: クラスター内に負荷の高いサーバーがある場合、リバース プロキシは URL を書き換え、接続要求に応じて負荷の低いサーバーから同じリソースまたはバックアップを取得します。
  • 静的コンテンツや、短期間に大量のアクセス要求がある動的コンテンツに対するキャッシュサービスを提供します。
  • 一部のコンテンツを圧縮して帯域幅を節約したり、ネットワーク帯域幅の狭いネットワークにサービスを提供したりします。
  • アップロード速度を遅くする
  • HTTPアクセス認証を提供する

Nginx リバース プロキシ イントラネット侵入 8081 ポートの実践

目的: ポート8081を隠し、ポート80にアクセスしてポート80にアクセスする

実装手順

ポート8081でAPIを設定し、正常にデプロイしました。これで8081は公開され、アクセスできるようになりました。

Ubuntu環境を例に挙げる

$ cd /etc/nginx/
nginx.conf をダブルクリックします。

次のように、Nginx httpノードのポート8081のリバースプロキシを設定します。

 サーバー{
        80 default_server をリッスンします。
        リッスン [::]:80 default_server;
        場所 /api/ {
                        プロキシパス http://127.0.0.1:8081;
                }

                場所 /apidocs/ {  
                        proxy_pass http://localhost:8081/api/;
                        swagger-ui.html をインデックスします。
                        エラーページ 404 http://localhost:8081/api/swagger-ui.html;
                }
         }

設定が完了したら、Nginxサービスを再起動します。

$ サービス nginx を再起動します

http://ip/apidocs/swagger-ui.html に正常にアクセスしました

サーバーセキュリティグループルールをオフにし、8081ポートセキュリティグループルールを削除して、Alibaba Cloudにログインして設定することができます。Alibaba Cloudを例に挙げましょう。他のものも同様です。

http://ip/apidocs/swagger-ui.html は引き続きアクセス可能です

http://ip:8081/api/swagger-ui.html にアクセスできません

これまでのところ、ポート80にアクセスし、ポート8081にプロキシすることで、nginxリバースプロキシポート8081の目的を達成しました。

Ngnixのロケーションとproxy_passフィールドのルールを理解することに重点を置く

実装方法2:アップストリームを構成する

httpノードの下にupstreamノードを追加します

アップストリームデモ{ 
   サーバーIP:8080; 
   サーバーIP:8081; 
}

サーバーノードの下のロケーションノードでproxy_passをhttp:// + アップストリーム名に設定します。

位置 / { 
      proxy_pass http://demo; 
}

Nginx 構成の https サポート

 ##
        # cnn SSL設定を追加
        ##
        サーバ{
                聞く 443;
                サーバー名 demo.com;
                sslオン;
                ssl_certificate /etc/nginx/cert/test.pem;
                ssl_certificate_key /etc/nginx/cert/test.key;
                ssl_session_timeout 5分;
                位置 / {
                							#ルートドメイン名またはIP
                                proxy_pass http://demo.com;
                        }
        }

要約する

Nginx リバース プロキシの紹介に関するこの記事はこれで終わりです。Nginx リバース プロキシに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Nginxリバースプロキシはさまざまな状況でのクロスドメインの問題を解決します
  • Nginx ルーティング転送とリバースプロキシロケーション構成の実装
  • Nginx イントラネット スタンドアロン リバース プロキシの実装
  • Nginx リバース プロキシ学習例チュートリアル
  • nginx リバースプロキシと詳細な使用方法

<<:  MySQL の高可用性アーキテクチャの完全な説明: MHA アーキテクチャ

>>:  テキストエリアのテキスト入力領域に改行を実装する方法

推薦する

MySQL Community Server 8.0.11 のインストールと設定方法のグラフィックチュートリアル

最近、MySQL を始めとしてデータベースの知識を勉強し始めました。以下では、皆さんの参考になるよう...

Linux で CPU 使用率が高くなる原因をトラブルシューティングするプロセスの詳細な説明

目次序文始めるステップトラブルシューティング序文CPU 使用率が高くなるのは、オンラインでよくある問...

MySQL での or ステートメントの使用例

1. MySQL での or 構文の使用、および MySQL 構文で or を使用する際の注意点。 ...

データベースアカウントのパスワード暗号化の詳細な説明と例

データベースアカウントのパスワード暗号化の詳細な説明と例データベースアカウントとパスワードはデータベ...

uniapp 要素ノードスタイルの動的変更の詳細な説明

目次1. スタイル属性をバインドして変更するhtml:対応するjs:達成された効果:次に、refを使...

MySQLの結合の基本原理についての簡単な説明

目次結合アルゴリズム駆動テーブルと非駆動テーブルの違い1. 単純なネストループ結合、単純なネスト、イ...

CentOS7 は rpm パッケージを使用して mysql 5.7.18 をインストールします

例示するこの記事は、2017 年 5 月 20 日に MySQL-5.7.18 を使用して作成されま...

Linux サーバーのグラフィック カードのクラッシュの解決策

ログインインターフェースの解像度が特に大きい場合、グラフィカルインターフェース全体が特に大きくなり、...

LinuxのバックグラウンドでPythonプログラムを実行するいくつかの方法

1. 最初の方法は、unhup コマンドを直接使用してプログラムをバックグラウンドで実行することです...

MySQL 8.0.22 のインストールと設定方法のグラフィックチュートリアル

この記事ではMySQL 8.0.22のインストールと設定について記録します。具体的な内容は以下のとお...

Virtualbox で Ubuntu 16.04 の起動時に共有ディレクトリを自動的にマウントする最良の方法

仮想マシンを使用する人は通常、操作と使用を容易にするために仮想マシン用の共有ディレクトリを設定します...

MySQLの基本を素早く学ぶ

目次SQLを理解するSELECTを理解するエイリアス定数をクエリし、固定定数列を追加します。重複行を...

MySQL でコミットされていないトランザクション情報を見つける方法

少し前に、「ORACLE でコミットされていないトランザクションの SQL ステートメントを見つける...

史上最もクリエイティブな404ページのデザインは、ウェブサイトのユーザーエクスペリエンスを効果的に向上させます

ウェブを閲覧しているときに 404 ページに遭遇することはあまりないので、見落としがちです。しかし、...

React コンポーネント間で通信する 3 つの方法 (シンプルで使いやすい)

目次1. 親子コンポーネント通信2. クロスレベルコンポーネント通信1. レイヤーごとに値を渡す2....