私のセットアップは少し変わっているように見えるかもしれませんが、あまりフェッチされるべきではありません。phpページと静的ファイルをサーバーするapache2インスタンスがあります。node-formidablePOST
を使用してファイルのアップロード()を処理するノードjsサーバーがあります。その上に、を使用します。phpファイルで提供されるフォームでのアップロードにノードサーバーを使用するために、同じドメイン、ポート、およびプロトコルを維持できるようにnginxを配置することにしました。つまり、基本的に/ uploadをノードjsに(直接)パイプし、できればプロキシの外部に完全にパイプします。残りはapache2サーバーによって処理されます:nginx 1.0.14
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;
}
これはhttps://stackoverflow.com/a/1167559に基づいています
私の問題は、nginxからノードjsに送信する前に、nginxがPOSTリクエスト全体をバッファリングすることです。これは、ノードjsがヒットする前にChromeの進行状況インジケーターが100%までカウントされることで確認できます(0〜100%のインスタントアップロード(ローカルホストからローカルホストに送信されるため))。
proxy_buffering off
なぜ期待どおりに機能しないのかわかりません(バッファリングしないで、受信時にリクエストをバックエンドに渡す必要があります)。
あるいは...これは他の方法で可能ですか?
ヒント/ヘルプは大歓迎です。
キャスパー
注:
nginx_tcp_proxy_module
あまり普及していないものを使ってみました。Varnish
自分のやりたいことができるので、URLに基づいてnode-jsに直接パイプすることを検討しました(著者による優れたブログ投稿、読む価値があります)が、httpsサーバーを実行しています(実際には2つ) )それVarnish
ができるかどうかはわかりませhttps
ん(サポートされていないので、ラップする必要がありますが、2つのドメイン(証明書)では不可能です)