nginxのが提供するリバースプロキシとロード・バランシング機能は、あなたは、ビジネスの合理的な完了を割り当てるサイトの処理能力を向上させることができ、同時にまた、リアルタイムの更新を必要としない動的なページ出力、キャッシュへの静的なページの形成をすることができ、キャッシング機能を利用しますサイトの応答速度を向上させます。
プロキシとリバースプロキシ
エージェント(フォワードプロキシ、ターゲットサーバーがアクセスしている人を知っていません)
クライアントとターゲットサーバの間に位置し、トランジットとして機能します。実際には、クライアントは、ターゲットサーバにアクセスすることを望んでいるが、何らかの理由で直接アクセスすることはできませんし、プロキシサーバにターゲットサーバに要求を入れ、プロキシサーバが再びターゲットサーバーを要求し、応答が戻って結果をクライアントに返されました。
プロキシを(実際にユーザが単にのみリバースプロキシサーバーにアクセスし、最終的にサーバーを認識していない)リバース
クライアントは、宛先サーバーとしてプロキシサーバーが逆になり、プロキシサーバは、プロキシサーバーを、逆逆に要求を送信した後、内部のバックエンドサーバ、クライアントに応答して得られた結果を要求します。
特徴:
-
セキュリティ。セキュリティとリバースプロキシ。あなたは本当の内部サーバーを非表示にすることができます。
-
機能性。フォワードプロキシ主な目的は、ファイアウォールの内側のLANユーザのための外部ネットワークにアクセスするための方法を提供することです。主な目的は、ユーザーが外部へのアクセスを提供するために、ファイアウォールの内側に、プロキシサーバーを逆にすることですが、また、複数のバックエンドサーバの負荷分散、キャッシング機能を提供することができます。
プロキシサービスの設定を元に戻し
ある設定ファイルnginxの位置ブロックに proxy_pass
命令。
server{
listen 80;
server_name test.test;
#将本机接收到的test.test的请求全部转发到另外一台服务器192.168.78.128
location /{
proxy_pass http://192.168.78.128;
#下面是其他辅助指令
proxy_set_header Host $host; #更改来自客户端的请求头信息
proxy_set_header X-Real_IP $remote_addr; #用户真实访问ip
proxy_connect_timeout 2; #配置nginx与后端服务器建立连接的超时时间
proxy_read_timeout 2; #配置nginx向后端发出read请求的等待响应超时时间
proxy_send_timeout 2; #配置nginx向后端服务器发出write请求的等待响应超时时间
proxy_redirect http://www.baidu.com; #用于修改后端服务器返回的响应头中的Location和Refresh
}
}
ロードバランシング
負荷分散(ロードバランス):負荷がそれによってサービスの可用性と応答速度を増加させる、操作複数の実行ユニットに広がっています。
-
以下に示すように無負荷バランスWebアーキテクチャありません。
ユーザーは、このサーバは、その後、ハングアップサイト全体をハングアップした場合は、この時点でサーバーに直接接続します。
-
負荷分散されたWebアーキテクチャがあります。
ユーザーが直接バックエンドサーバーにアクセスしていないが、サーバへのアクセス負荷分散、サーバーの負荷分散は、バックエンドサーバーに再びによって転送します。この時間が、バックエンドサーバーがあるとハングアップした場合、その後、負荷分散サーバは、それが良いフォローアップを要求されます淘汰するサイトの正常な動作に影響を与えないように、そのステーションに転送されます。今回はさらにそれを緩和するためにバランスをとる第2のサーバの負荷を導入する、ロード・バランシング・サーバーがハングアップしません考慮する必要があります。
ロードバランシングの設定
通过配置负载均衡服务器的 Nginx 中的
upstream
指令可以实现。
不同负载均衡配置的特点如下图所示:
配置方式 | 说明 |
---|---|
轮询方式(默认) | 每个请求按照时间顺序逐一分配到不同的后端服务器,如果有服务器宕机,会自动剔除。 |
权重方式(weight) | 利用 weight 制定轮询的权重比率,与访问率成正比,用于后端服务器性能不均的情况,性能好的服务器 weight 高一点。 |
ip_hash | 使每个访客固定访问一个后端服务器,这样可以解决 session 共享的问题。 |
第三方模块(fair、url_hash)nginx 默认不包含第三方模块,使用时需要安装 | 第三方模块采用 fair,按照每台服务器的响应时间来分配,响应时间短的优先分配。如果第三方模块采用的是 url_hash,则安装 url 的 hash 值来分配。 |
一般轮询配置
server{
listen 80;
server_name test.test;
location / {
proxy_pass http://web_server; #反向代理
}
}
#配置负载均衡服务器组
upstream web_server {
server 192.168.78.128;
server 192.168.78.129;
}
加权轮询配置
#配置负载均衡服务器组
upstream web_server {
server 192.168.78.128 weight=1;
server 192.168.78.129 weight=3;
}
这里面的权值总和为一个循环,这里以 4 次为一个循环,那么就是每四次请求中,三次会被分派到 129 这个服务器,一次分配到 128,但是具体三次并不会顺序执行,而是按照算法分散执行。 我们也可以设置每台 web 服务器在负载均衡调度中的状态。
upstream web_server{
server 192.168.78.128 weight=1 max_fails=1 fail_timeout=2; #允许请求失败次数,在请求max_fail次数失败后,暂停服务的时间
server 192.168.78.200 backup; #预留的备份服务器
server 192.168.78.33 down; #当前服务器不参与负载均衡
}
ip_hash 配置
upstream web_server{
ip_hash;
server 192.168.78.120;
server 192.168.78.123;
server 192.168.78.33 down; #如果这台服务器宕机,则用down表示当前服务器暂不参与负载均衡
}
使用 ip_hash 的时候,不能使用 weight 和 backup。
第三方模块(fair)
安装fair模块的步骤略过...
配置 fair 的负载均衡
server{
listen 80;
server_name test.test;
location / {
proxy_pass http://web_server
}
}
upstream web_server{
server 192.168.78.128;
server 192.168.78.132;
fair; #使用fair
}