Nginxリバースプロキシと負荷分散

1つは、リバースプロキシ

フォワードプロキシ: 

          フォワードプロキシは、よくプロキシと呼ばれますが、次のように機能します。特定のWebサイトにはアクセスできませんが、プロキシサーバーにはアクセスできますが、このプロキシサーバーはアクセスできないWebサイトにアクセスできるため、プロキシに接続しますサーバーは彼に、私がアクセスできないウェブサイトのコンテンツが必要であり、プロキシサーバーがそれを取得してそれを私に返すと言った。Webサイトの観点から見ると、プロキシサーバーがコンテンツをフェッチするときのレコードは1つしかありません。プロキシがWebサイトに通知するかどうかによっては、それがユーザーの要求であることを認識できず、ユーザーの情報も非表示になる場合があります。

         つまり、フォワードプロキシは、クライアントとオリジンサーバーの間にあるサーバーです。オリジンサーバーからコンテンツを取得するために、クライアントはリクエストをプロキシに送信し、ターゲットを指定してから、プロキシがリクエストをオリジンサーバーに転送し、取得したコンテンツをクライアント。クライアントは、フォワードプロキシを使用するためにいくつかの特別な設定を行う必要があります。

リバースプロキシの概念:

         リバースプロキシとは、必要なプロキシサーバーにコンテンツがないことをクライアントが認識していないことを意味します。クライアントの場合、プロキシサーバーは元のサーバーであり、クライアントは特別な設定を行う必要はありません。クライアントはリバースプロキシサーバーの名前空間にありますコンテンツの通常のリクエストを送信し、リバースプロキシサーバーがリクエストの転送先を決定し、取得したコンテンツを自分のコンテンツであるかのようにクライアントに返します。

 フォワードプロキシとリバースプロキシの違い:

        フォワードプロキシの一般的な用途は、ファイアウォール内のLANクライアントにインターネットへのアクセスを提供することです。フォワードプロキシでは、バッファリング機能を使用してネットワークの使用量を減らすこともできます。リバースプロキシの一般的な用途は、ファイアウォールの背後にあるサーバーをインターネットユーザーがアクセスできるようにすることです。リバースプロキシは、複数のバックエンドサーバーに負荷分散を提供したり、バックエンドが遅いサーバーにバッファリングサービスを提供したりすることもできます。さらに、リバースプロキシは高度なURLポリシーと管理テクノロジを有効にすることもできるため、異なるWebサーバーシステムのWebページが同じURLスペースに同時に存在することができます。

       セキュリティの観点から、フォワードプロキシを使用すると、クライアントはそれを介して任意のWebサイトにアクセスでき、クライアント自体を非表示にするため、セキュリティ対策を講じて、許可された承認済みのクライアントのみがサービスを提供できるようにする必要があります。リバースプロキシは外部に対して透過的であり、訪問者はプロキシにアクセスしていることを知りません。

周囲:

    プロキシ+負荷分散サーバー:centos7:192.168.253.130

    Webサーバー1:centos7:192.168.253.110

    Webサーバー2:centos7:192.168.253.120

三台服务器都操作
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld  关闭防火墙
[root@localhost ~]# yum -y install ntpdate
[root@localhost ~]# ntpdate pool.ntp.org   同步时间

1. nginxをインストールし、nginx.conf構成ファイルを変更します

[root@localhost src]# yum -y install gcc gcc-c++ zlib-devel pcre-devel   源码安装nginx所需要的依赖包
[root@localhost src]# tar xzf nginx-1.12.2.tar.gz 
[root@localhost src]# cd nginx-1.12.2
[root@localhost nginx-1.12.2]# ./configure
[root@localhost nginx-1.12.2]# make && make install

####在http{}中的server{}中的location  / {}中添加:proxy_pass ip   这个ip是代理的ip
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf  添加
46             proxy_pass http://192.168.253.110;

2.プロキシ側にWebをインストールし、テストします

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# echo "welcome to hya" > /var/www/html/index.html
[root@localhost ~]# systemctl  start httpd

代理服务器开启nginx
[root@localhost ~]# /usr/local/nginx/sbin/nginx 
[root@localhost ~]# ss -tnl
State       Recv-Q Send-Q       Local Address:Port                      Peer Address:Port              
LISTEN      0      128                      *:80                                   *:* 

 2、Nginxはロードバランシングを実現

アップストリームロードバランシングモジュールの説明:

         アップストリームは、nginxのhttpアップストリームモジュールです。このモジュールは、単純なスケジューリングアルゴリズムを使用して、クライアントIPからバックエンドサーバーへのロードバランシングを実現し、アップストリームコマンドを通じてロードバランシング名を指定します。この名前は任意に指定され、後で使用する必要がある場所で直接呼び出すことができます。

アップストリームは負荷分散アルゴリズムをサポートしています:

nginxの負荷分散モジュールは、現在4つのスケジューリングアルゴリズムをサポートしています。

ポーリング(デフォルト):各要求は、発生順に異なるバックエンドサーバーに割り当てられます。バックエンドサーバーがダウンした場合、障害のあるサーバーは自動的に削除されるため、ユーザーアクセスは影響を受けません。重みは重みの値を指定します。値が大きいほど、アクセスの可能性が高くなります。これは、バックエンドサーバーの構成レベルによって異なります。

Ip_hash:各リクエストはアクセスIPのハッシュ結果に従って割り当てられるため、同じIPからの訪問者は定期的にバックエンドサーバーにアクセスし、動的ページのセッション共有の問題を効果的に解決します。

公平:これは前の2つよりもインテリジェントな負荷分散アルゴリズムです。このアルゴリズムは、ページ委託とロード時間に基づいて負荷をインテリジェントに分散できます。つまり、バックエンドサーバーの応答時間に従って要求を割り当て、応答時間は短いです。優先順位の割り当て。

url_hash:このメソッドは、アクセスされたURLのハッシュ結果に従って要求を分散し、各URLが同じバックエンドサーバーに送られるようにします。これにより、バックエンドキャッシュサーバーの効率をさらに向上させることができます。

アップストリームでサポートされているステータスパラメータ:

httpアップストリームモジュールでは、server命令を通じてバックエンドサーバーのIPアドレスとポートを指定できます。また、次のような負荷分散スケジューリングで各ノードのステータスを設定することもできます。down:現在のサーバーが負荷分散に参加していないことを示します。backup:reserved backup。他のすべての非バックアップマシンに障害が発生したり、ビジー状態になったりすると、バックアップマシンが要求されるため、このマシンへのストレスが最も少なくなります。

 max_fails:リクエストの失敗回数を許可します。デフォルトは1で、最大回数を超えた場合は戻ります

proxy_next_upstreamモジュール定義のエラー。

Fail_timeout:max_failsエラーが発生した後、サービスを一時停止する時間。Max_failsとfaul_timeoutは一緒に使用されます。

注:ロードスケジューリングアルゴリズムがip_hashの場合、ロードバランシングスケジューリングのバックエンドサーバーのステータスは、重みとバックアップにできません。

1. nginx.confファイルを構成します(リバースプロキシ環境の操作に基づく)

###########################################
在http{}中server{}外添加:
upstream    webservers {
        server  ip:80    weight=1;
        server  ip:80   weight=1;
        }
并且修改location  / {}中http://后的名称为upstream后的名字
location / {
            root   html;
            index  index.html index.htm;
            proxy_pass  http://webservers;
            proxy_set_header X-Real-IP $remote_addr;
        }
####################################################
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
 34     upstream webservers{
 35       server 192.168.253.110:80 weight=1;
 36       server 192.168.253.120:80 weight=1;
 37     }

 46         location / {
 47             root   html;
 48             index  index.html index.htm;
 49             proxy_pass http://webservers;
 50         }

 2. Webをインストールしてテストする

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# echo "welcome to hya222" > /var/www/html/index.html
[root@localhost ~]# systemctl  start httpd

负载服务重载nginx
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload

おすすめ

転載: blog.csdn.net/yeyslspi59/article/details/108071355