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カスタムモジュールの書き方です。