উজান থেকে প্রতিক্রিয়া শিরোনাম পড়ার সময় প্রবাহটি খুব বড় শিরোনাম প্রেরণ করে


227

আমি এই ধরণের ত্রুটিগুলি পাচ্ছি:

2014/05/24 11:49:06 [ত্রুটি] 8376 # 0: * 54031 প্রবাহটি আপস্ট্রি থেকে প্রতিক্রিয়া শিরোনাম পড়ার সময় খুব বড় শিরোনাম পাঠিয়েছে: ক্লায়েন্ট: 107.21.193.210, সার্ভার: আমজনতা ডট কম, অনুরোধ: "জিইটি / দ্য- মগজ-ধোলাই-ক্রনিকলস স্পনসর্ড-বাই-গুজরাট সরকার /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles- স্পন্সর-বাই-গুজরাট সরকার /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by- গুজরাট সরকার /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government/ ,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: / aamjanata।কম /-মগজ-ধোলাই-ক্রনিকলস স্পনসর্ড-বাই-গুজরাট সরকার /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the- মগজ-ধোলাই-ক্রনিকলস স্পনসর্ড-বাই-গুজরাট সরকার /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles- স্পন্সর-বাই-গুজরাট সরকার /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by- গুজরাট সরকার /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government/,%20https: //aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,%20https:/aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government/,%20https:/aamjanata।কম /-মগজ-ধোলাই-ক্রনিকলস স্পনসর্ড-বাই-গুজরাট সরকার /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the- মগজ-ধোলাই-ক্রনিকলস স্পনসর্ড-বাই-গুজরাট সরকার /,% 20https: /aamjanata.com/the-brainwash-chronicles-sponsored-by-gujarat-government /,% 20https: /aamjanata.com/the-brainwash-chronicles- স্পন্সর-বাই-গুজরাট সরকার /,% 20ht

সর্বদা এটি একই হয়। একটি url বারবার এবং কমা পৃথকীকরণের সাথে পুনরাবৃত্তি হয়। এটি কী কারণে ঘটছে তা অনুমান করতে পারছি না। কারও ধারণা আছে?

আপডেট: অন্য ত্রুটি:

http request count is zero while sending response to client

কনফিগারেশন এখানে। অন্যান্য অপ্রাসঙ্গিক জিনিস রয়েছে তবে এই অংশটি যুক্ত / সম্পাদিত হয়েছিল

fastcgi_cache_path /var/nginx-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
proxy_buffer_size   128k;
proxy_buffers   4 256k;
proxy_busy_buffers_size   256k;
    # Upstream to abstract backend connection(s) for PHP.
    upstream php {
            #this should match value of "listen" directive in php-fpm pool
            server unix:/var/run/php5-fpm.sock;
    }

এবং তারপরে সার্ভার ব্লকে: সেট করুন $ skip_cache 0;

    # POST requests and urls with a query string should always go to PHP
    if ($request_method = POST) {
            set $skip_cache 1;
    }
    if ($query_string != "") {
            set $skip_cache 1;
    }

    # Don't cache uris containing the following segments
    if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
            set $skip_cache 1;
    }

    # Don't use the cache for logged in users or recent commenters
    if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
            set $skip_cache 1;
    }

    location / {
            # This is cool because no php is touched for static content.
            # include the "?$args" part so non-default permalinks doesn't break when using query string
            try_files $uri $uri/ /index.php?$args;
    }


    location ~ \.php$ {
            try_files $uri /index.php;
            include fastcgi_params;
            fastcgi_pass php;
            fastcgi_read_timeout 3000;

            fastcgi_cache_bypass $skip_cache;
            fastcgi_no_cache $skip_cache;

            fastcgi_cache WORDPRESS;
            fastcgi_cache_valid  60m;
    }

    location ~ /purge(/.*) {
        fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";
    }`

আপনার প্রক্সি কনফিগারেশনটি সঠিক বলে মনে হচ্ছে না। আপনি কি কনফিগারেশন ভাগ করতে পারেন?
নিও

আপনি কি যোগ করার চেষ্টা করতে পারেন: fastcgi_buffers 16 16 কে; fastcgi_buffer_size 32k;
নিও

উত্তর:


406

আপনার কনফিড ফাইলটিতে নিম্নলিখিতগুলি যুক্ত করুন

fastcgi_buffers 16 16k; 
fastcgi_buffer_size 32k;

160
আপনার উত্তর আমাকে সঠিক প্রতিক্রিয়াতে পরিচালিত করার সময়, আপনাকে সঠিক বাফার আকারগুলি কীভাবে নির্ধারণ করতে হবে এবং কেন এটি গুরুত্বপূর্ণ তা দেখাতে হবে। অন্যথায় এটি অন্ধকারে একটি শট। আকার দেওয়ার
ওয়েস জনসন

4
"fastcgi_buffer_size 32k;" একা কাজ করেনি, NginX পুনরায় আরম্ভ করার জন্য আমার উভয় লাইনই দরকার ছিল। ওয়ার্ডপ্রেস প্লাগইনজনিত NginX এর সাথে 502 ত্রুটির কারণে আমি এখানে এসেছি।
পিজে ব্রুনেট

6
যদি fast_cgi_buffersসহায়তা না করে তবে proxy_buffers নীচে উত্তরটি @amd
icc97

11
এই উত্তর সম্পর্কে কোন ব্যাখ্যা দয়া করে।
এডসন হোরাসিও জুনিয়র

5
এটি আমার জন্য কাজ করে, আমি কেবল যুক্ত করতে চাই যে উবুন্টু 16.04-এ এনজিনেক্স কনফিগারেশন ফাইলটি অবস্থিত /etc/nginx/nginx.confএবং মানগুলি HTTP- র মধ্যে inside ...}
মারিও

134

যদি এনজিনেক্স প্রক্সি / বিপরীত প্রক্সি হিসাবে চলমান থাকে

যে, ব্যবহারকারীদের জন্য ngx_http_proxy_module

এছাড়াও fastcgi, proxyমডিউলটি একটি অস্থায়ী বাফারে অনুরোধ শিরোনামটিও সংরক্ষণ করে।

আপনার সময় বৃদ্ধি করার প্রয়োজন হতে পারে proxy_buffer_sizeএবং proxy_buffers, বা এটি সম্পূর্ণই অক্ষম (অনুগ্রহ করে পড়ুন nginx ডকুমেন্টেশন )।

প্রক্সি বাফারিং কনফিগারেশনের উদাহরণ

http {
  proxy_buffer_size   128k;
  proxy_buffers   4 256k;
  proxy_busy_buffers_size   256k;
}

আপনার প্রক্সি বাফারটি অক্ষম করার উদাহরণ (দীর্ঘ পোলিং সার্ভারের জন্য প্রস্তাবিত)

http {
  proxy_buffering off;
}

আরও তথ্যের জন্য: এনগিনেক্স প্রক্সি মডিউল ডকুমেন্টেশন


8
"প্রক্সি_বসি_বফারস_সাইজ" অবশ্যই "প্রক্সি_বাফলার" বিয়োগ বাফারের আকারের চেয়ে কম হতে হবে
চৌবি

তুমি আসল পুরুষ! ধন্যবাদ! প্রথম বিকল্পটি আমার রুবিতে
রেলস

সম্ভবত একটি নির্বোধ প্রশ্ন, তবে সার্ভারের সামনে আমার একটি প্রক্সি রয়েছে যা এই ত্রুটিটি ফিরিয়ে দিচ্ছে। বাফার পরিবর্তন করা কাজ করেছিল তবে আমি ভিতরে থাকা মেশিনে একটি নতুন ত্রুটি পেয়েছি। writev() failed (104: Connection reset by peer) while sending to client এই প্রক্সি সেটিংস কি সম্ভবত সেই ত্রুটিটি সংশোধন করবে, এবং ওহে প্রবাহের সার্ভার বা প্রক্সিটিতে যাবে?
অ্যাডাম প্যাটারসন

1
কেন proxy_buffers 4 ...? যেহেতু ডিফল্টটি 8
অ্যাড্রিয়ানটিএনটি

23

upstream sent too big header while reading response header from upstream "আমি যা দেখছি তা পছন্দ করি না" বলে এনজিন্সের জেনেরিক উপায়

  1. আপনার আপস্ট্রিম সার্ভার থ্রেড ক্র্যাশ হয়েছে
  2. আপস্ট্রিম সার্ভারটি একটি অবৈধ শিরোনাম ফিরে পাঠিয়েছে
  3. এসটিডিআরআর থেকে ফেরত প্রেরিত নোটিশ / সতর্কতাগুলি তাদের বাফারকে উপচে ফেলেছে এবং এটি এবং এসটিডিআউট উভয়ই বন্ধ ছিল

3: বার্তার উপরে ত্রুটিযুক্ত লগগুলি দেখুন, এটি বার্তাটির আগের লগড লাইনগুলি দিয়ে স্ট্রিমিং করছে? PHP message: PHP Notice: Undefined index: একটি লুপ থেকে আমার লগ ফাইল থেকে স্নিপেট উদাহরণ:

2015/11/23 10:30:02 [error] 32451#0: *580927 FastCGI sent in stderr: "PHP message: PHP Notice:  Undefined index: Firstname in /srv/www/classes/data_convert.php on line 1090
PHP message: PHP Notice:  Undefined index: Lastname in /srv/www/classes/data_convert.php on line 1090
... // 20 lines of same
PHP message: PHP Notice:  Undefined index: Firstname in /srv/www/classes/data_convert.php on line 1090
PHP message: PHP Notice:  Undefined index: Lastname in /srv/www/classes/data_convert.php on line 1090
PHP message: PHP Notice:  Undef
2015/11/23 10:30:02 [error] 32451#0: *580927 FastCGI sent in stderr: "ta_convert.php on line 1090
PHP message: PHP Notice:  Undefined index: Firstname

নীচে থেকে তৃতীয় লাইনে আপনি দেখতে পাচ্ছেন যে বাফার সীমাটি আঘাত পেয়েছে, ভেঙে গেছে এবং পরবর্তী থ্রেড এটিতে লিখেছিল। এরপরে Nginx সংযোগটি বন্ধ করে 502 ক্লায়েন্টকে ফিরিয়ে দেয়।

2: অনুরোধ অনুসারে প্রেরিত সমস্ত শিরোলেখ লগইন করুন, তাদের পর্যালোচনা করুন এবং নিশ্চিত করুন যে তারা মানদণ্ডের সাথে সামঞ্জস্য হয় (এনজিনেক্স 24 ঘন্টাের বেশি বয়স্ক কোনও কুকিকে মুছে ফেলার / মেয়াদ শেষ করার অনুমতি দেয় না, অবৈধ সামগ্রীর দৈর্ঘ্য প্রেরণ করে কারণ সামগ্রী গণনা করার আগে ত্রুটি বার্তাগুলি বাফার হয়েছিল were ..)। getallheaders ফাংশন কল সাধারণত বিমূর্ত কোড পরিস্থিতিতে পিএইচপি সমস্ত শিরোনাম পেতে সাহায্য করতে পারে

উদাহরণ অন্তর্ভুক্ত:

<?php
//expire cookie
setcookie ( 'bookmark', '', strtotime('2012-01-01 00:00:00') );
// nginx will refuse this header response, too far past to accept
....
?>

এবং এই:

<?php
header('Content-type: image/jpg');
?>

<?php   //a space was injected into the output above this line
header('Content-length: ' . filesize('image.jpg') );
echo file_get_contents('image.jpg');
// error! the response is now 1-byte longer than header!!
?>

1: আপনার থ্রেডটি সঠিক প্রান্তে পৌঁছেছে এবং সমাপ্তির আগে প্রস্থান করছে না তা নিশ্চিত করতে, যাচাই বা স্ক্রিপ্ট লগ করুন।


3
এই উত্তর মাথায় পেরেক আঘাত। কখনও কখনও এটি কেবল এনগিনেক্সের কনফিগারেশন নয়, যা আসলে শিরোনাম উত্পাদন করে। যখন ত্রুটি_বন্দরে নোটিশ থাকে তবে ডিসপ্লে_এরফার্স বন্ধ থাকে php.ini এ, সমস্ত বার্তা সামগ্রীটির পরিবর্তে এফসিজিআই শিরোনামে প্রদর্শিত হয়।
শচিয়ান

16

Plesk নির্দেশাবলী

প্ল্লেস্ক 12-এ আমার বিপরীত প্রক্সি হিসাবে চলছিল (যা আমি মনে করি ডিফল্ট) the সুতরাং বর্তমান শীর্ষের উত্তরটি কাজ করে না কারণ এনজিনেক্সও প্রক্সি হিসাবে চালিত হচ্ছে।

আমি গিয়েছিলাম Subscriptions | [subscription domain] | Websites & Domains (tab) | [Virtual Host domain] | Web Server Settings

তারপরে সেই পৃষ্ঠার নীচে আপনি অতিরিক্ত দুটি এনজিএনএক্স নির্দেশিকা সেট করতে পারেন যা আমি শীর্ষ দুটি উত্তরের সংমিশ্রণ হিসাবে সেট করেছি:

fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
proxy_buffer_size   128k;
proxy_buffers   4 256k;
proxy_busy_buffers_size   256k;

1
কোথায়? কোন কনফিগারেশন?
রেডসান্দ্রো

@ রেডসান্ড্রো যদি আপনি এটির মাধ্যমে খুঁজে না পান Subscriptions | [subscription domain] | Websites & Domains (tab) | [Virtual Host domain] | Web Server Settingsতবে আমি নিশ্চিত যে আপনি কী বোঝাতে চাইছেন না?
icc97

এটি আমার জন্য সমাধান ছিল: ডোমেনস> ডোমেনের নাম> অ্যাপাচি & এনগিনেক্স সেটিংস> অতিরিক্ত এনগিনেক্স নির্দেশিকা প্লেস্ক অনিক্স সংস্করণ 17.8.11
dijkstra8x

1
আমি এটি একটি নতুন ফাইলে যুক্ত করেছি /etc/nginx/conf.d/proxy.confএবং এনজিনেক্স পুনরায় চালু করেছি, এটি দুর্দান্ত কাজ করে, ধন্যবাদ!
rubo77

6

আপনি যদি সিমফনি কাঠামো ব্যবহার করছেন: এনগিনেক্স কনফিগারেশনের সাথে জগাখিচির আগে প্রথমে ChromePHP অক্ষম করার চেষ্টা করুন।

1 - অ্যাপ্লিকেশন / কনফিগারেশন / কনফিগার_দেভ.আইএমএল খুলুন

2 - এই লাইন মন্তব্য করুন:

#chromephp:
    #type:   chromephp
    #level:  info

ক্রোম পিএইচপি এক্স-ক্রোম পিএইচপি-ডেটা শিরোনামে ডিবিগ তথ্য জসন-এনকোডযুক্ত প্যাক করে, যা ফাস্টগিজির সাথে এনজিনেক্সের ডিফল্ট কনফিগারেশনের জন্য খুব বড়।

সূত্র: https://github.com/symfony/symfony/issues/8413#issuecomment-20412848


3

আমরা বুঝতে পেরেছিলাম যে আমাদের যে সার্ভারটি এটির মুখোমুখি হয়েছিল তারা পিএমএফ ত্রুটি / সতর্কতা / বিজ্ঞপ্তিগুলি এফসিজিআই সকেটের মাধ্যমে প্রেরণ করা হচ্ছিল পিএইচপি ত্রুটি / সতর্কতা / নোটিশগুলির ফলে bus দেখে মনে হচ্ছে একটি বাছা বাগ আছে যখন শিরোনামের কিছু অংশ বাফার খণ্ডগুলিতে বিভক্ত হয়ে যায়।

সুতরাং php_admin_value[error_log]প্রকৃতপক্ষে রচনামূলক কিছুতে সেট করা এবং পিএইচপি-এফপিএম পুনরায় চালু করা সমস্যার সমাধানের জন্য যথেষ্ট ছিল।

আমরা একটি ছোট স্ক্রিপ্ট দিয়ে সমস্যাটি পুনরুত্পাদন করতে পারি:

<?php
for ($i = 0; $i<$_GET['iterations']; $i++)
    error_log(str_pad("a", $_GET['size'], "a"));
echo "got here\n";

বাফার উত্থাপনের ফলে 502 টি আঘাত করা আরও শক্ত হয়ে উঠল তবে অসম্ভব নয়, উদাহরণস্বরূপ স্থানীয়:

bash-4.1# for it in {30..200..3}; do for size in {100..250..3}; do echo "size=$size iterations=$it $(curl -sv "http://localhost/debug.php?size=$size&iterations=$it" 2>&1 | egrep '^< HTTP')"; done; done | grep 502 | head
size=121 iterations=30 < HTTP/1.1 502 Bad Gateway
size=109 iterations=33 < HTTP/1.1 502 Bad Gateway
size=232 iterations=33 < HTTP/1.1 502 Bad Gateway
size=241 iterations=48 < HTTP/1.1 502 Bad Gateway
size=145 iterations=51 < HTTP/1.1 502 Bad Gateway
size=226 iterations=51 < HTTP/1.1 502 Bad Gateway
size=190 iterations=60 < HTTP/1.1 502 Bad Gateway
size=115 iterations=63 < HTTP/1.1 502 Bad Gateway
size=109 iterations=66 < HTTP/1.1 502 Bad Gateway
size=163 iterations=69 < HTTP/1.1 502 Bad Gateway
[... there would be more here, but I piped through head ...]

fastcgi_buffers 16 16k; fastcgi_buffer_size 32k;:

bash-4.1# for it in {30..200..3}; do for size in {100..250..3}; do echo "size=$size iterations=$it $(curl -sv "http://localhost/debug.php?size=$size&iterations=$it" 2>&1 | egrep '^< HTTP')"; done; done | grep 502 | head
size=223 iterations=69 < HTTP/1.1 502 Bad Gateway
size=184 iterations=165 < HTTP/1.1 502 Bad Gateway
size=151 iterations=198 < HTTP/1.1 502 Bad Gateway

সুতরাং আমি বিশ্বাস করি সঠিক উত্তরটি হল: আপনার এফএমপি কনফিগারেশন ঠিক করুন যাতে এটি ডিস্কে ত্রুটিগুলি লগ করে।


1

এই ত্রুটিটি অনুসন্ধান করার সময় এটি এখনও গুগলে সর্বোচ্চ এসও-প্রশ্ন, সুতরাং এটি বন্ধ করি।

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

এই ত্রুটিটি কেবল উন্মাদ পরিমাণ লগ বার্তা প্রেরণ করে যদি ঘটে থাকে তবে ওয়েবসভার সেটিংস পরিবর্তন করার প্রয়োজন হবে না।


0

আমি নিশ্চিত নই যে সমস্যাটি শিরোনাম পিএইচপি যা পাঠাচ্ছে তার সাথে সম্পর্কিত। নিশ্চিত হয়ে নিন যে বাফারিং সক্ষম হয়েছে। সহজ উপায় হ'ল একটি প্রক্সি.কনফ ফাইল তৈরি করা:

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_buffering         on;
proxy_buffer_size       128k;
proxy_buffers           4 256k;
proxy_busy_buffers_size 256k;

এবং একটি fascgi.conf ফাইল:

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;
fastcgi_buffers 128 4096k;
fastcgi_buffer_size 4096k;
fastcgi_index  index.php;
fastcgi_param  REDIRECT_STATUS    200;

এর পরে আপনার এগুলি আপনার ডিফল্ট কনফিগার সার্ভারে কল করতে হবে:

http {
  include    /etc/nginx/mime.types;
  include    /etc/nginx/proxy.conf;
  include    /etc/nginx/fastcgi.conf;
  index    index.html index.htm index.php;
  log_format   main '$remote_addr - $remote_user [$time_local]  $status '
    '"$request" $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';
  #access_log   /logs/access.log  main;
  sendfile     on;
  tcp_nopush   on;
 # ........
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.