blog

Nginxのカスタムモジュールの書き方:異なるサーバにルーティングされたポストパラメータによる。

Nginxは簡単に別のURLまたは異なるサーバに転送するパラメータを取得に応じて達成することができる、しかし、あなたはhttpパケット、エルボー上のNginxのデフォルトの設定ルールに応じてリクエスト...

Jan 6, 2014 · 2 min. read
シェア

Nginxは簡単に別のURLまたは異なるサーバに転送するパラメータを取得するに応じて実現することができますが、httpパケットボディに応じて要求をルーティングする必要がある場合、nxのデフォルトの設定ルールは限界まで引き伸ばされていますが、それは問題ではない、nxは、行を拡張する必要がある限り、強力なカスタムモジュール機能を提供します。

考えを整理すると、需要は

Nginxはhttpパケットボディのパラメータに基づいて適切なルートを選択します。

ここで、まず別の問題を考えてみましょう:

Nginxのデフォルト設定のサポートでサーバ間のジャンプを実装することは可能でしょうか?例えば、ステートマシンのように、あるサーバから OK を実行した後、別のサーバにジャンプし、ルールに従って順番に通過するような。

答えはイエスで、bayonet書いた後、意図的にnginxで試した機能です。

以下に設定例を示します:

server { 
    listen       8080; 
    server_name  localhost; 
    location / { 
        proxy_pass "http://localhost:8888"; 
        error_page 433 = @433; 
        error_page 434 = @434; 
    } 
    location @433 { 
        proxy_pass "http://localhost:6887"; 
    } 
    location @434 { 
        proxy_pass "http://localhost:6987"; 
    } 
    error_page   500 502 503 504  /50x.html; 
    location = /50x.html { 
        root   html; 
    } 
} 

どういうことかわかりますか?433と434という2つの非標準的なhttpリターンコードを使うと、すべてのリクエストはデフォルトでhttp://:88、リターンコードが433か434かによってhttp://:88またはhttp://:89。

OK]を、多分あなたはこの例の目的を推測している、はい、ちょうどカスタムモジュールでは、httpパッケージの本体によると、別のリターンコードを返すようにし、別のバックエンドサーバーにproxy_passすることができます。

さて、次はnginxカスタムモジュールの書き方です。

Read next

AndroidでRxJavaを使ってREST APIクライアントを作る

Androidの開発をしたことがある人なら、Netflixが開発したレスポンシブ拡張機能のJava実装であるRxJavaのことを聞いたことがあるかもしれません。MSDNからその定義を引用すると、Reactiveは、非同期およびイベントベースのプログラミングのために、観測可能なコレクションとLINQスタイルのクエリを組み合わせたサードパーティのライブラリです。NetflixはGithubでライブラリをホストし、Java 6+をサポートし、Androidアプリ開発で利用できるようにしています。

Jan 6, 2014 · 11 min read