Apache和nginx的反向代理行为差异(缓冲)
Apache和nginx在反向代理的缓冲行为上有差异。
以下是用原生中文重新表达的选项:
– Nginx是一个Web服务器软件。
-
- デフォルトでリクエストはバッファリングされる.
-
- 転送先へのリクエストは,nginxがリクエストを受信し終えた後.
- ただし,nginx 1.7.11以降はproxy_request_bufferingオプションで無効化できる.
Apache (阿帕奇)
-
- リクエストはバッファリングされない.
- 転送先へのリクエストは,Apacheのリクエスト受信途中から.
使用缓冲的优点和缺点
优势
-
- 低速なクライアントの影響を受けない.
unicornのworkerがリクエスト受信待ちで占有… ということがなく,workerが効率良く捌けるようになる.
転送先Webアプリケーションのセッション数(unicornのworker数)が限られる場合は効果的.
不够完美
-
- メモリやディスクを消費する.
リクエストが数百MBを超えたり,塵も積もればの大量リクエストがある場合は,ディスクI/Oがボトルネックになり得ます.
client_body_buffer_sizeでメモリへのバッファサイズをチューニングできますが,消費はします.
転送先へのリクエスト送信がわずかに遅れる.
バッファリングなしで随時送信するよりは,わずかに遅くなります.わずかにですが.
虽然只是上传几百KB的数据,但是经常在慢速的MVNO网络上使用(被使用)的Web应用程序…为了利用缓冲的好处,我们经常采用Debian+nginx+unicorn+Rails的架构。
参考文献
-
- Module ngx_http_proxy_module
- 過去に実験したデータ(どっかいった…)