nginxのリバースプロキシ、ロード・バランシングとキャッシュ

nginxのリバースプロキシとキャッシュ

  • 実験環境

    • nginxのプロキシサーバーをリバース:Centos7 192.168.10.123を
    • LAMP:Centos7 192.168.10.121
    • LNMP:Centos7 192.168.10.124

    注:前の設定環境に基づいてこの実験は、参照利子可能性がある場合nginxの知人nginxの知人2

  • nginxのプロキシモジュール

    • プロキシモジュール、モジュールはngx_http_proxyによってサポートされています
    • 上流のモジュール、モジュールはngx_http_upstreamによって支持されています
    • モジュールでサポートされているFastCGIモジュール、

nginxのリバースプロキシの設定

  • nginxのサービスは、yumをインストール使い方

    画像-20191113141055484

    画像-20191113141147912

    画像-20191113141705582

  • プロキシモジュールリバースプロキシ機能を有効にするには、設定を変更します。

    画像-20191113141817084

    画像-20191113163634485

            location / {
    
                    if ( $request_filename ~* \.php$ ) {
                        proxy_pass http://192.168.10.121;
                      }
                    if ( $request_filename !~* \.php$ ) {
                        proxy_pass http://192.168.10.124;
                    }
            }
    
  • 設定構文をチェックし、サービスを開始

    画像-20191113142949646

  • アクセスのテスト

    画像-20191113155104679

    画像-20191113144141359

    画像-20191113155044211

    画像-20191113143139581

    192.168.10.121処理要求が192.168.10.124を処理し、他のホストに転送されたホストに接続要求.PHPサフィックスを転送するプロキシサーバー

  • 唯一のリバースプロキシサーバーのIPアドレスを記録するクライアントの送信元アドレスを収集することはできませんプロキシログのバックエンドを逆転するために、このメソッドを使用して、ない正確なログ解析

    画像-20191113144848986
    LNMPサーバはリバースプロキシサーバーのIPアドレスを記録します、クライアントの正しい送信元アドレスを収集することはできません
    画像-20191113145531080

    画像-20191113161232546

  • 変更は、プロキシの設定を逆にnginxの
    画像-20191113150403831
    画像-20191113163723896
    画像-20191113152010686

          location / {
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header X-Forwarded-For $remote_addr;
                    #HTTP的请求端真实的IP
                    if ( $request_filename ~* \.php$ ) {
                        proxy_pass http://192.168.10.121;
                      }
                    if ( $request_filename !~* \.php$ ) {
                        proxy_pass http://192.168.10.124;
                    }
            }
    #标准格式:X-Forwarded-For: client1, proxy1, proxy2...
    #X-Forwarded-For头信息可以有多个,中间用逗号分隔,第一项为真实的客户端ip,其余为经过的代理或负载均衡的ip地址,经过几个就会出现几个
    #$proxy_add_x_forwarded_for变量包含客户端请求头中的"X-Forwarded-For",与$remote_addr用逗号分开
    #$remote_addr变量的值是客户端的IP
    #$http_x_forwarded_for变量,保存了请求中的X-Forwarded-For信息
    参考:https://blog.51cto.com/wjw7702/1150225
  • ハッシュバケットサイズの大きさを超えて追加のアドオンの追加情報を表すが提案されている場合は、必要が調整することができます

    画像-20191113151413105

    画像-20191113151812091

    proxy_headers_hash_max_size 1024;
    proxy_headers_hash_bucket_size 128;

    画像-20191113151827046

  • 修正LAMPサーバーのApacheのログフォーマットサービス
    画像-20191113150904205
    画像-20191113190119513

    画像-20191113150728456

    画像-20191113150842112

  • アクセステスト、ログの結果を表示

    LNMPサーバーのログ

    画像-20191113162053816

    Apacheサーバのログ

    画像-20191113190301146

nginxのリバースプロキシキャッシュサーバの設定

  • リバースプロキシサーバーの設定を変更します。

    画像-20191113195219049

    HTTP容器proxy_cache_pathに位置

    画像-20191113165912709

    画像-20191113170337502

    http {
    ...
        proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=xcache:10M max_size=500M;
    ...
        location / {
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header X-Forwarded-For $remote_addr;
                    proxy_cache xcache; #使用xcache类型缓存
                    proxy_cache_valid 200 1d; #响应状态码为200的页面缓存1天
                    proxy_cache_valid 301 302 1m; #响应状态码为301、302的页面缓存1分钟
                    proxy_cache_valid any 1m; #其余的缓存1分钟
                    proxy_cache_revalidate on; #指示NGINX在刷新来自服务器的内容时使用GET请求
                    proxy_cache_use_stale error timeout http_500 http_502 http_504; #若请求出现timeout、500、502、504s时使用过期的缓存响应请求
                    add_header X_cache_hit $upstream_cache_status; #添加缓存命中状态到报文首部
    ...
    
    }
    #内容参考来自:https://www.cnblogs.com/howhy/p/6732216.html
  • 指定されたキャッシュ・ストレージ・ディレクトリを作成し、適切な権限を与えられました
    画像-20191113195550378

    画像-20191113195607688

  • 結果を表示するブラウザ

    画像-20191113195357473

  • キャッシュファイルが保存されているチェック

    画像-20191113195654302

    proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=xcache:10M max_size=500M;
    #proxy_cache_path 定义缓存目录
    #目录的生成对应levels=1:2
    #:隔离目录,一个分号表示有两级目录
    #1表示父目录为1个字符,目录名为缓存文件名的最后一个字符
    #2表示子目录下为2个字符,目录名为倒数第3和倒数第2两个字符
    #keys_zone 定义缓存名称和内存空间大小
    #max_size 定义缓存硬盘空间大小

上流のロード・バランシング

  • プロキシサーバーのnginxの設定を変更します

    画像-20191113200353333

    画像-20191113201602402

    画像-20191113203754788

    http {
    ...
        upstream webservers{
               [rr|wrr|ip_hash|least_conn]
            server 192.168.10.121 max_fails=3 fail_timeout=30s weight=1;
            server 192.168.10.124 max_fails=3 fail_timeout=30s weight=1;
            server 192.168.10.122 backup; #backup 备用服务器
        }
    ...
    
            location / {
                    proxy_set_header X-Forwarded-For $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            #       proxy_set_header X-Real-IP $remote_addr;
            #       proxy_cache xcache;
            #       proxy_cache_valid 200 1d;
            #       proxy_cache_valid 301 302 1m;
            #       proxy_cache_valid any 1m;
            #       proxy_cache_revalidate on;
            #       proxy_cache_use_stale error timeout http_500 http_502 http_504;
            #       add_header X_cache_hit $upstream_cache_status;
                    proxy_pass http://webservers;
    
            }
    ...
    
    }
    
    #Nginx的调度算法:
    #   rr:轮询,轮流分配请求
    #   wrr:加权轮询,参考权重轮分配请求(如:定义upsteam_server默认算法就是wrr)
    #   ip_hash源地址hash,对源ip地址计算hash值,一样的hash值将请求送到相同服务器,实现session绑定
    #   least_conn:最少连接调度算法
    #后端服务器状态
    #down:表示当前server暂时不参与负载均衡。
    #backup:预留的备份机,当其他所有非backup机器出现故障或者繁忙的时候,才会请求backup机器
    #max_fails:允许请求的失败次数,默认为1,配合fail_timeout一起使用
    #fail_timeout:经过max_fails次请求失败后服务将会暂定fail_timeout时间不向请求失败的主机发送请求
  • クラスタ内のすべてのサーバのテストページを追加します。

    192.168.10.121 LAMPサーバー

    画像-20191113202639143

    画像-20191113202624981

    192.168.10.124 LNMPサーバ

    画像-20191113202824270

    画像-20191113202740568

  • アクセスのテスト

    画像-20191113203642665

    画像-20191113203707485

おすすめ

転載: www.cnblogs.com/lastyear/p/11853682.html