私の設定はちょっと変わって見えるかもしれませんが、遠すぎてはいけません。 PHPページと静的ファイルを扱うapache2インスタンスがあります。私はnode-formidableを使ってファイルアップロード(POST
)を処理するノードjsサーバーを持っています。その上に、nginx 1.0.14
を使用します。 phpファイルで提供されるフォームでアップロードするためにノードサーバーを使用するには、同じドメイン、ポート、プロトコルを使用できるようにnginxを置くことにしました。 したがって、基本的に私は(直接)私のノードjsに、好ましくはプロキシの外側に完全にパイプしたい/アップロードしています。残りはapache2のサーバによってhandledeさ:https://stackoverflow.com/a/1167559nginx proxy_bufferingとnode js formidableを使用したPOST本体のパイプ
に基づいています
location /upload {
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
send_timeout 600;
proxy_buffering off;
proxy_pass https://node_backend;
}
location/{
proxy_set_header Host $http_host;
proxy_pass https://apache_backend;
}
私の問題は、nginxのは、ノードJSにnginxのからそれを送信する前に全体のPOSTリクエストをバッファリングしていることです。私は、ノードのjsがヒットする前に、最大100%までクロムカウントの進捗インジケータとしてこれを確認できます(ローカルホストからローカルホストに送信するので、0-100%のインスタントアップロード)。
proxy_buffering off
が私が期待しているように動作していない理由がわかりません(バッファしてはならず、代わりに要求をバックエンドに渡します)。
また、これは別の方法で可能ですか?
どのようなヒント/助けも大歓迎です。
キャスパー
注: 私が使用しているので、普及していないとする
nginx_tcp_proxy_module
を使用してみました。 私はVarnish
を使用して考えていますが、私が望むことをすることができるので、piping directly to node-js based on url(素晴らしいブログ投稿者、btw。Varnish
はそれを行うことができることを確認している場合
ありがとう!あなたの答えは私に多くの時間を救った。私のサーバブロックに 'proxy_request_buffering off;'を追加すると動作します。 – codeKonami