এনগিনেক্স চঙ্কড ট্রান্সফার এনকোডিং সক্ষম করা


17

দেখে মনে হচ্ছে এনজিনেক্স ০.৮.৩৫ চুনকৃত ট্রান্সফার এনকোডিং সমর্থন করতে পারে :

Nginx 0.8.35 01 এপ্রিল ২০১০ এর সাথে পরিবর্তনগুলি

*) Change: now the charset filter runs before the SSI filter.

*) Feature: the "chunked_transfer_encoding" directive.

এটি দুর্দান্ত, কারণ আমি এনজিএনএক্স বিপরীত প্রক্সি দিয়ে গিট-এইচটি-পি-পি-ব্যাকএন্ড প্রক্রিয়াতে গিট পরিবর্তন আনার চেষ্টা করছি। গিট এইচটিটিপি ক্লায়েন্ট-পার্শ্ব দক্ষতার কারণে চঙ্কিত স্থানান্তর এনকোডিংয়ের সুবিধা গ্রহণ করে ।

তবে, আমি এটি কাজ করতে পারি না। আমি নিম্নলিখিত কনফিগার অনুরোধের সাথে ডবিয়ান লেনির উপর 0.8.44 এনগিনেক্স ব্যবহার করছি:

./configure \
--sbin-path=/usr/sbin \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--user=www-data \
--group=www-data \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-http_realip_module

এবং নিম্নলিখিত কনফ ফাইল:

server {
    server_name example.com;
    location / {
        proxy_pass  http://192.168.0.10;
        include     /etc/nginx/proxy.conf;
        chunked_transfer_encoding on;
    }
}

এবং আমার proxy.confচেহারা এই মত:

proxy_redirect          off;
proxy_set_header        Host $host;
proxy_set_header        X-Real-IP $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size    100M;
client_body_buffer_size 128k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffer_size       4k;
proxy_buffers           4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

(মূলত আমি স্ট্যাক ওভারফ্লোতে এই প্রশ্নটি পোস্ট করেছি তবে এটি পরামর্শ দেওয়া হয়েছিল যে এটি সার্ভার ফল্টের পক্ষে আরও উপযুক্ত)


1
আপনার বাফার পাশাপাশি খণ্ডিত এনকোডিং থাকতে পারে না। বাফাররা ডেটা প্রেরণের জন্য অপেক্ষা করে, খণ্ডিত এটি অবিলম্বে প্রেরণ করা উচিত।
মার্টিন Fjordvald

স্পষ্টতই Nginx সংস্করণ 1.3.9 (27/11/2012) থেকে অংশটিকে সমর্থন করে। যাইহোক, যখন কোনও স্মার্টফোন আমার এনগিন্স সার্ভারে ছিটেড পোষ্ট অনুরোধগুলি প্রেরণ করে তখনও আমি "411 দৈর্ঘ্যের প্রয়োজনীয়" ত্রুটি বার্তা পেয়েছি। কোন পরামর্শ?
মায়ার

উত্তর:


25

আমি জানি, এটি একটি পুরানো প্রশ্ন, তবে এটি সমস্যার সন্ধানে উঠে এসেছিল (যা সমাধানের চেষ্টা করে আমি বিকেল কাটিয়েছি)। মার্টিন এফ এর মন্তব্য আমাকে এটির কাজ করার জন্য যথেষ্ট সংকেত দিয়েছে!

কৌশলটি proxy_buffering off;আপনার অবস্থান ব্লকে সেট করা in ধরে নিই যে আপনার আপস্ট্রিম সার্ভারটি জঞ্জাল প্রতিক্রিয়াগুলি প্রেরণ করছে, এর ফলে এনজিনেক্স স্বতন্ত্র খণ্ডগুলি ক্লায়েন্টের কাছে ফেরত পাঠিয়ে দেবে - এমনকি যদি আপনি জিপিপ আউটপুট সংকোচনতা চালু করে থাকেন তবে এগুলি ফ্লাইতে ঝাঁপিয়ে পড়ে।

মনে রাখবেন বাফারিং বন্ধ করার অন্যান্য অসুবিধাগুলিও থাকতে পারে, তাই কেন বুঝতে না পারলে অন্ধভাবে বাফারিং বন্ধ করবেন না।


9

আমি পরিষ্কার করতে আপনার প্রশ্ন সম্পাদনা করার পরামর্শ দিচ্ছি। খণ্ডিত অনুরোধ এবং জঞ্জাল প্রতিক্রিয়াগুলির মধ্যে একটি বড় পার্থক্য রয়েছে। জন ডালটনের উত্তর উত্তরটিকে সম্বোধন করে। গিট দুটোই করে।

এনগিনেক্স বর্তমানে ছিন্নমূল পোষ্ট অনুরোধগুলিকে সমর্থন করে না এবং এই পোস্টিং বিষয়টিতে অনুসন্ধানের ফলাফলগুলিতে উচ্চ দেখায়। খণ্ডিত পোষ্ট অনুরোধগুলি যখন আপনি আগাম আপলোড করা ডেটার পরিমাণ জানেন না এবং মোবাইল ফোন দ্বারা প্রায়শই ব্যবহৃত হয় তখন ব্যবহৃত হয়।

আমি খুঁজে পাওয়া একমাত্র কার্যকরী সমাধান হ'ল:

http://wiki.nginx.org/HttpChunkinModule

দুর্ভাগ্যক্রমে এটি nginx recompiling প্রয়োজন কারণ nginx লোডযোগ্য মডিউল সমর্থন করে না।


আমি সম্মত: আমি খুঁজে পেয়েছি যে এইচটিপিচুনকিনমডুলই একমাত্র তাত্ত্বিক কাজ ... তবে এটি আমার পরিস্থিতিতে আমার পক্ষে উন্মুক্ত নয়। অন্য কিছু করা যায় কি কেউ জানেন? (30 জানুয়ারী 2011 এর পরে কোনও পরিবর্তন হয়েছে?)
এমডাহলম্যান

1
আমি জানি না যে কোনও পরিবর্তন। এটি সক্ষম করার জন্য আমি অন্য দিন মাত্র একটি এনজিনেক্সের পুনরায় সংকলন করেছি।
রজার বিনস

2

আমার ক্ষেত্রে ... আমি অনেক কিছুই চেষ্টা করি এবং অবশেষে কেবল কনফিগারেশনে যুক্ত করা দরকার

proxy_http_version 1.1;

এবং এটি কাজ করে ...


আমাকে যুক্ত করতে হয়েছিল proxy_set_header Connection "";... - मूलিক
খ্রিস্টান

এটি আমার পক্ষেও কাজ করেছিল। তবে আমি আসলে বুঝতে পারি না কেন।
জেফ

আমার শেষ মন্তব্যের আপডেট করুন .... এটি কাজ করেছে কারণ আমার আপস্ট্রিম সার্ভারটি চুনকড ট্রান্সফার এনকোডিং ব্যবহার করছে, যা HTTP 1.1 এ চালু হয়েছিল ( en.wikedia.org/wiki/Chunked_transfer_encoding )। এনজিনেক্স প্রক্সিংয়ের জন্য ডিফল্ট HTTP প্রোটোকল সংস্করণটি 1.0 1.0
জেফ

1

অন্যান্য উত্তরগুলি বৈধ হতে পারে, তবে এটি একটি পুরানো প্রশ্ন।

দেখে মনে হচ্ছে ছিঙ্কড ট্রান্সফারগুলি প্রতি এনজিঙ্ক্স ১.৩.৯ [1] এর সমর্থিত , যা ২০১৩ এর মাঝামাঝি সময়ে প্রকাশ হয়েছিল।

[1] http://wiki.nginx.org/HttpChunkinModule

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