এনগিনেক্স: কীভাবে অনুরোধের বডি বাফারিং পুরোপুরি অক্ষম করবেন


17

আমি আমার উবুন্টু বাক্সে ম্যাডসোনিক সেট আপ করার চেষ্টা করছি এবং এর সামনে এনগিনেক্স চালাও । সমস্যাটি হ'ল আমি যখন ওয়েব ইন্টারফেসের মাধ্যমে স্টাফ আপলোড করার চেষ্টা করি তখন আমি এই সতর্কতাটি পেয়ে যাচ্ছি:

31115#0: *14 a client request body is buffered to a temporary file

এটি আপলোড উইন্ডোতে প্রগতি বারগুলি কেন কাজ করে না তাও ব্যাখ্যা করে। এখানে আমার প্রাসঙ্গিক Nginx কনফিগারেশন:

    # proxy the madsonic server here
    location / {
            proxy_pass                      https://madsonic-server/;
            proxy_redirect                  off;
            proxy_buffering                 off;
            proxy_request_buffering         off;
            allow                           all;
            proxy_http_version              1.1;

            proxy_set_header                Host $http_host;
            proxy_set_header                X-Real-IP $remote_addr;
            proxy_set_header                X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header                X-Forwarded-Host $server_name;
            proxy_set_header                X-Forwarded-Proto $scheme;

            client_body_buffer_size         0;
            client_max_body_size            0;
            proxy_max_temp_file_size        0;
            proxy_read_timeout              18000;
            proxy_send_timeout              18000;

            gzip                            off;
    }

আমি এই মুহুর্তে Nginx 1.9.12 ব্যবহার করছি।

আমি যেটি অর্জন করতে চাই তা হ'ল এনগিনেক্স কোনওভাবে অনুরোধের বডি বাফার ব্যবহার না করা এবং আকার নির্বিশেষে কেবল অনুরোধের বডিটি সরাসরি ম্যাডসোনিকের কাছে প্রেরণ করা। এটা কি সম্ভব? যদি তা হয় তবে সঠিক কনফিগারেশনটি কী হবে?

অন্যান্য প্রশ্নের উত্তরগুলি বাফার আকারগুলি সেট করার উপায়গুলির সাথে পাওয়া গেছে বলে মনে হচ্ছে। আমি কোন বাফার চাই না। আমি অনুরোধ বডিটি সরাসরি ম্যাডসোনিকে দিতে চাই।


আপনি এটি বন্ধ করতে পারবেন না। আপনি কেবল বাফার আকার সেট করতে পারেন।
মাইকেল হ্যাম্পটন

@ মিশেলহ্যাম্পটন তবে এই ব্যাখ্যাটির কী হবে?
র‌্যাড

আহ, আপনি ঠিক বলেছেন। এবং আপনি নিজের প্রশ্নের উত্তর দিয়েছেন, বলে মনে হচ্ছে।
মাইকেল হ্যাম্পটন

@ মিশেলহ্যাম্পটন ভাল, হ্যাঁ, এটি ছাড়াও এখনও কোনও কারণে বন্ধ হয়নি :(
রেড

এর সাথে কোন ভাগ্য? প্রক্সি_প্রক্রিয়া_বফারিংয়ের প্রক্সি_প্রযুক্তি ডকস সেটিংস অনুসারে আমার একই সমস্যা হচ্ছে, তবে এটি আপলোডগুলি বাফার করছে।
alejandrodnm

উত্তর:


17

আমার কাছে ডকার রেজিস্ট্রি করার জন্য একটি এনগিনেক্স প্রক্সি সেটআপ করার একই সমস্যা ছিল। আমি শেষ করে দিয়েছি:

client_max_body_size 0;
proxy_http_version 1.1;
proxy_request_buffering off;

client_max_body_sizeত্রুটি রোধ করতে এখনও 0 হতে হয়েছিল, তবে watch -n 1 du -hs .স্পষ্টভাবে একটি পার্থক্য দেখিয়েছে। বাফারিংয়ের অনুরোধের পরে ডেটা উপস্থিত হয়, অনুরোধের সময় কোনও বাফারিং এটি হাজির করে না।

proxy_http_version 1.1খণ্ডিত এনকোডিংয়ের কারণে প্রয়োজনীয়। এনগিনেক্স ডক্সের উদ্ধৃতি:

মূল অনুরোধের বডিটি প্রেরণের জন্য যখন HTTP / 1.1 অংশযুক্ত স্থানান্তর এনকোডিং ব্যবহার করা হয়, HTTP / 1.1 প্রক্সিংয়ের জন্য সক্ষম না করা হলে অনুরোধ বডিটি নির্দেশিক মান নির্বিশেষে বাফার করা হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.