実世界のシナリオ分析のnginxとバックエンドのリバースプロキシのウェブサイトのさまざまな種類の数にする方法

 

        いくつかの時間前、同社はちょうど櫛とサーバ統合の、このような混乱を作るために、この機会を利用して、全体の杭州から張家口に石のタワーサーバーの移行要求に集まる必要があり、移行は月締めくくっ

アポロ、kibana、grafana、ジェンキンス、などのいずれかを使用してポート80、へ:マシンの外に最適化された1/3程度に、我々は、そのような今、いくつかの視覚的なUIの生産に配備断片化しているとして、完了後にいくつかの問題に遭遇しました

少数のマシンに、ポート80が十分ではありません、他にどのような安全のために公衆に開いているポート、非80以外の今、もはやオープンパブリックネットワークポート、これらの視覚的なUIはもはやへ直接アクセスすることはできません。だから、別の方法を見つける必要があります。

 

ワン:nginxのでリバースプロキシありません

      この2つの問題を解決するために、最初の自然な反応は、理想的なの私の考えは、このような次のチャートである必要があり、リバースプロキシを使用して考えることです。

     すべての要求の両方のユーザーは、現在のURLは、バックエンドプロキシにジャンプする必要がある場合には、優れた戦略は、現在のホストはジャンプ・トゥ・バックと判断されたかを判断するためにnginxのようにするだろうかを決定するためにnginxの聞かせて、nginxのでした

これであなたは解決策を完璧ことができるようにWebサーバは、a.mip.comはアポロにジャンプなど、j.mip.comは、その上のジェンキンスにジャンプします。そして、それはないですか?nginxのでは、リライトを使用することができます

命令モジュールが判断する場合。

 

II:命令が使用している場合

 

      ここでは、nginxの比較的原始的な技術に言及し、サードパーティ製のモジュールを使用する必要がある場合、あなたはまた、nginxのを再コンパイルする必要があり、単純にnginxのを拡張した、OpenRestyを使用するので、ここで、トラブルの多くを使用し、しなければなりません

これは、最新ダウンロードするには、成熟したLuaのモジュールの数を統合1.15.8をインストールし、nginxのとまったく同じ、。

 

あなたは成功したインストールディレクトリopenrestyを持っていることを見たときに、デフォルトでは、は/ usr / local /ディレクトリにインストールされています。

#1 [ローカルホストローカル@ルート] lsの
ビンなどのゲームがlibexecのlibのlib64を含める   openresty   sbinに共有SRC 
#の[ローカルホストローカル@ルート] PWD 
は/ usr / localは、

 

次に、あなたが彼女についてopenrestyバージョンを見て-v nginxのを使用することができます。

[ルート@のローカルホストsbinに]#のPWD 
は/ usr / local / openresty / nginxの/ sbinに
[ルート@ローカルホストsbinに]#
[ルート@のローカルホストsbinに]#。/ nginxの- Vの
 nginxのバージョン:openresty /1.15.8.1

 

便宜上、私はnginxのオープン3台のサーバーを使用します:

<1> 192.168.23.129:80 nginxのは、まず、それが代理で、敷地内にオープンしました。

<2> 192.168.23.129:8001 nginxの第二のサイト、シミュレーションアポロを開きます。

<3> 192.168.23.129:8002 nginxの第三のサイトを開き、アナログジェンキンス。

 

1.アポロのシミュレーション:

    サーバー{ 
        聞く        8001 ; 
        SERVER_NAME somenameのエイリアスanother.alias。
        位置 / { 
            ルートHTML。インデックスapollo.html。
        } 
    }
           

 

    デフォルトのポート8001ページのウェブサイトはapollo.html、以下に示すようにnginxのは、htmlディレクトリにある場合apollo.htmlこのパスです。

[ルート@ localhostのhtmlの]#のPWD 
は/ usr / local / openresty / nginxの/ htmlの
[ルート@ localhostのhtmlの]#のLS 
50x.html   apollo.html   index.htmlをjenkins.html

 

2.ジェンキンスシミュレーション

    サーバー{ 
        聞く        8002 ; 
        SERVER_NAME somenameのエイリアスanother.alias。
        位置 / { 
            ルートHTML。     インデックスjenkins.html; 
        } 
    }
       

   

      ハは、パスjenkins.htmlファイル上に示しました。それらを繰り返しません。

 

3.プロキシシミュレーション

    サーバー{ 
        聞く        80 
        サーバー名はlocalhost。

        場所 / { 

           場合($ホスト= " a.mip.com " ){ 
               proxy_passます。http:// localhostを:8001; 
           } 

           もし($ホスト= " j.mip.com " ){ 
               proxy_passのhttp:// localhostを:8002。
           } 
    }

 

      変数$ホストシステムを通じて、書き換えモジュールの下に必要な条件は、ウェブサイトにホストURLジャンプの現在の値を決定した場合にのみ見ることができます。

 

4.ホストのマッピング

       さて、それからだけa.mip.comとIPアドレスを192.168.23.129缶をnginxのためにマッピングされたj.mip.comする必要があります。覚えやすく、本物ではないこれらのドメイン名のため。

192.16823.129 a.mip.com
 192.16823.129 j.mip.com

 

5. [スタート] nginxの

[ルート@ localhostのsbinの]#./ nginxの  
[ルート@ localhostのsbinの]#
[ルート@ localhostのsbinの]#
[ルート@ localhostのsbinの]#のは、netstat - tlnp 
アクティブなインターネット接続(サーバーのみ)
原Recv関数 -Qを送る-Qをローカルアドレス外国の住所州PID / プログラム名     
TCP         0       0  0.00.08001             0.00.0:* LISTEN       3802 / nginxのを:マスター   
TCP         0       0  0.00.08002             0.00.0:* LISTEN       3802 / nginxのを:マスター   
TCP         0       0  0.00.080               0.00.0:* LISTEN       3802 / nginxのを:マスター   
TCP         0       0  0.00.022               0.00.0:* LISTEN       1172 / sshdのを            
TCP         0       0  127.0を0.125             0.00.0:* LISTEN       1724 / マスター          
にtcp6        0       0 ::: 22                    ::: * LISTEN       1172 / sshdの            
にtcp6        0       0 :: 125                   ::: * LISTEN       1724 /マスター  

    

    あなたは、あなたが確認するために、ブラウザに行くことができ、80,8001,8002ポートが開かれている、チャートで見ることができます。

 

 

          私たちが解決この問題は完璧だった見ることができ、まあ、それは問題Benpianだと私たちはここに、あなたを助けるBenpian期待して、出会いの実際のシーンに話をすべてnginx.confです。

 

#USERの誰もいません。
worker_processes   1 ; 

#error_logログ / error.logに。
#error_logログ / error.logに予告。
#error_logログ /error.log   情報

#pidログ / nginx.pid。


イベント{ 
    worker_connections   1024 
} 


HTTP { 
    のmime.typesを含みます。
    default_typeアプリケーション / octet- ストリーム。

    LOG_FORMATメイン   ' $ホスト----> $ REMOTE_ADDR - $ REMOTE_USER [$ time_local] "$依頼" ' 
                      ' $ステータスの$ body_bytes_sent "$ HTTP_REFERER" '
                      ' "$ HTTP_USER_AGENT" "$ HTTP_X_FORWARDED_FOR" ' ; 

    access_logのログ / メインのaccess.log。

    sendfileの上; 
    上#tcp_nopush; 

    #keepalive_timeout   0 ; 
    keepalive_timeout   65 ; 

    #のGZIP   に、

    サーバー{ 
        聞く        80 
        サーバー名はlocalhost。

        #charset KOI8 - R。

        #access_logログ / メインhost.access.log。

    #位置 = / 取得{ 
        #set_unescape_uri $キーの$ arg_keyを。#これはngx_set_misc必要です
        #redis2_query GET $キー。
        #redis2_pass 10.10513.1746379 ; 
        #} 

        場所 / { 
           
           場合($ホスト= " a.mip.com " ){ 
               proxy_passはhttp:// localhostを:8001。
           } 

           もし($ホスト= " j.mip.com " ){ 
               proxy_passのhttp:// localhostを:8002。
           } 
 
           ルートHTML。
           インデックスのindex.htmlのindex.htm。   
           
        } 

        #error_page   404               / 404 の.html。

        #は、静的ページにサーバ・エラー・ページにリダイレクト / 50x.html 
        #1 
        error_page    500  502  503  504   / 50x.html。
        位置 = / 50x.html { 
            ルートHTML。
        } 

        #プロキシでリスニングのApacheにPHPスクリプト127.00.180 
        #location\ .PHPの$ { 
        #proxy_passます。http:// 127.0.0.1; 
        #}

        #上のリスニングのFastCGIサーバにPHPスクリプトを渡し127.00.19000 
        #1 
        #location\ .phpの$ { 
        #ルートのhtml; 
        #はfastcgi_pass    127.0を0.19000 
        #fastcgi_indexのindex.phpを。
        #のfastcgi_paramのSCRIPT_FILENAME   / スクリプト$ fastcgi_script_name。
        #はfastcgi_paramsが含まれます。
        #} 

        #、.htaccessファイルへのアクセスを拒否した場合はApache " のドキュメントルート
        #は、nginxのに同意" の1つの
        #の
        #location〜/ {\ .htから
        #はすべて拒否します。
        #} 
    } 


    #IPの混合物を使用して、別の仮想ホスト -名- 、およびポート- ベースの構成
    #1 
    サーバ{ 
        聞く        8001 
        SERVER_NAME somenameのエイリアスanother.alias。
        位置 / { 
            ルートHTML。
            インデックスapollo.html。
        } 
    } 

    サーバー{ 
        聞く        8002 
        SERVER_NAME somenameのエイリアスanother.alias。
        ロケーション/ { 
            ルートHTML。
            インデックスjenkins.html; 
        } 
    } 

    #HTTPSサーバ
    #1 
    の#server { 
    #聴く        443 SSL。
    #サーバー名はlocalhost。

    #ssl_certificateのcert.pem。
    #ssl_certificate_keyのcert.key。

    #1 ssl_session_cache共有:SSL:1メートルを。
    #ssl_session_timeoutの5メートル。

    HIGH#1のssl_ciphers:!aNULL :! MD5; 
    ;の#ssl_prefer_server_ciphers 

    #位置 / { 
    #ルートHTML。 
    #インデックスのindex.htmlのindex.htm。
    #} 
    #}

}
コードの表示

 

おすすめ

転載: www.cnblogs.com/huangxincheng/p/11790007.html
おすすめ