***
3534 ワード
***
エージェントとは?エージェントは、通常、複数のサーバ間で負荷を割り当てたり、異なるWebサイトからのコンテンツをシームレスに表示したり、HTTP以外のプロトコルでアプリケーションサーバに要求処理を渡したりするために使用されます.
プロキシリクエスト
Nginxエージェントが要求すると、指定したエージェントサーバに要求が送信され、応答が得られ、クライアントに送信されます.HTTPサーバ(別のNginxサーバまたは他のサーバ)へのリクエストのプロキシ、または非HTTPサーバへの特定のプロトコルの使用(
HTTPプロキシサーバにリクエストを渡す場合は、
転送アドレスはドメイン名またはIPアドレスとして指定できます.IPアドレスを使用する場合は、ポートを指定する必要があります.
HTTP以外のプロキシサーバにリクエストを渡す場合は、次のコマンドを適切に選択して使用します.
転送先アドレスの後ろに
リクエストヘッダの転送
デフォルトでは、Nginxはリクエストヘッダを再定義します:
バッファの設定
デフォルトでは、Nginxはプロキシ・サーバからの応答をバッファします.応答は内部バッファに格納され、応答全体が受信されるまでクライアントに送信されません.バッファリングは、応答がNginxからクライアントに同期して渡される場合、プロキシサーバの時間を無駄にする可能性があるため、低速クライアントのパフォーマンスを最適化するのに役立ちます.バッファを有効にすると、Nginxはプロキシ・サーバが応答を迅速に処理できますが、Nginxはクライアントがダウンロードする必要がある場合、応答内容をできるだけ多くキャッシュします.
バッファ使用
バッファが無効になっている場合は、プロキシサーバから応答を受信しながらクライアントに応答を同期して送信します.この動作は、応答の受信を迅速に開始する必要がある高速インタラクティブクライアントにとって必要かもしれません.
参考記事: NGINX Reverse Proxy proxy_passの小説明 Module ngx_http_proxy_module
エージェントとは?エージェントは、通常、複数のサーバ間で負荷を割り当てたり、異なるWebサイトからのコンテンツをシームレスに表示したり、HTTP以外のプロトコルでアプリケーションサーバに要求処理を渡したりするために使用されます.
プロキシリクエスト
Nginxエージェントが要求すると、指定したエージェントサーバに要求が送信され、応答が得られ、クライアントに送信されます.HTTPサーバ(別のNginxサーバまたは他のサーバ)へのリクエストのプロキシ、または非HTTPサーバへの特定のプロトコルの使用(
またはPHP
などの特定のフレームワークで開発されたアプリケーションを実行できます)、サポートされるプロトコルにはPython
、FastCGI
、uwsgi
、SCGI
およびmemcached
が含まれます.HTTPプロキシサーバにリクエストを渡す場合は、
Location
モジュールでproxy_pass
コマンドを指定する必要があります.たとえば、次のようにします.location /some/path/ {
proxy_pass http://www.example.com;
}
#
# curl 127.0.0.1:80/some/path/
# www.example.com
転送アドレスはドメイン名またはIPアドレスとして指定できます.IPアドレスを使用する場合は、ポートを指定する必要があります.
location ~ \.php {
proxy_pass http://127.0.0.1:8080;
}
HTTP以外のプロキシサーバにリクエストを渡す場合は、次のコマンドを適切に選択して使用します.
fastcgi_pass
FastCGIサーバにリクエストを渡すuwsgi_pass
要求をuwsgi_に渡すpassサーバ;scgi_pass
要求をSCGIサーバに渡す.memcached_pass
要求をmemcachedサーバに渡す.location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
転送先アドレスの後ろに
/
が付いているかどうかは、転送されたURLが異なることに注意してください.location ^~ /static/ {
proxy_pass http://www.test.com; # "/",
}
#
# curl http://localhost/static/index.html
# http://www.test.com/static/index.html
location ^~ /static/ {
proxy_pass http://www.test.com/; # "/",
}
#
# curl http://localhost/static/index.html
# http://www.test.com/index.html
リクエストヘッダの転送
デフォルトでは、Nginxはリクエストヘッダを再定義します:
Host
を$proxy_host
変数の値に設定します.Connection
はclose
に設定されている.他の空の文字列のヘッダフィールドが削除されます.proxy_set_header
命令により、要求ヘッダフィールドの値を変更することができる.この命令は、location
またはserver
などのhttp
ブロック以上のブロックで指定することができる.リクエストヘッダを渡すアプリケーションを見てみましょう.location /some/path/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # Web X-Forwarded-For IP
proxy_set_header Accept-Encoding "";
proxy_pass http://localhost:8000;
}
バッファの設定
デフォルトでは、Nginxはプロキシ・サーバからの応答をバッファします.応答は内部バッファに格納され、応答全体が受信されるまでクライアントに送信されません.バッファリングは、応答がNginxからクライアントに同期して渡される場合、プロキシサーバの時間を無駄にする可能性があるため、低速クライアントのパフォーマンスを最適化するのに役立ちます.バッファを有効にすると、Nginxはプロキシ・サーバが応答を迅速に処理できますが、Nginxはクライアントがダウンロードする必要がある場合、応答内容をできるだけ多くキャッシュします.
バッファ使用
proxy_buffering
コマンドを有効にするかどうかは、デフォルトではオンです.proxy_buffers
命令は、要求に割り当てられたバッファのサイズと数を制御し、プロキシ・サーバからの応答の第1の部分は、proxy_buffer_size
命令によって設定された個別のバッファに格納される.location /some/path/ {
proxy_buffers 16 4k;
proxy_buffer_size 2k;
proxy_pass http://localhost:8000;
}
バッファが無効になっている場合は、プロキシサーバから応答を受信しながらクライアントに応答を同期して送信します.この動作は、応答の受信を迅速に開始する必要がある高速インタラクティブクライアントにとって必要かもしれません.
location /some/path/ {
proxy_buffering off;
proxy_pass http://localhost:8000;
}
参考記事: