[Nginx] response_status = 0ஐ எவ்வாறு தோற்கடிப்பது

"பக்கக்குறிப்புகள்" வகையிலிருந்து ஒரு கட்டுரை.

டிஎல்: டி.ஆர்:

http2_max_field_size 8k; # всех спасет!

திட்டங்களில் ஒன்றில், பின்தளத்தின் சில உள் தர்க்கங்களை மாற்றிய பிறகு, பதிவுகளில் ஒரு விசித்திரமான பதில்_குறியீட்டைக் கவனிக்கத் தொடங்கினேன், அதாவது 0. பதிவுகளில் இது போன்றது:

{
  "timestamp": "2020-01-17T08:41:51+00:00",
  "remote_addr": "zzz.zzz.zzz.zzz",
  "request_time": 0,
  "upstream_response_time": "",
  "upstream_header_time": "",
  "http_accept_language": "-language",
  "response_status": 0,
  "request": "",
  "host": "example.com",
  "upstream_addr": "",
  "http_referrer": "",
  "request_length": 5854,
  "bytes_sent": 0,
  "http_user_agent": ""
}


இந்த தலைப்பில் ஆவணங்களைப் படிப்பது மற்றும் கூகிள் செய்வது முற்றிலும் எதையும் கொடுக்கவில்லை - ஏனென்றால்... கிளையன்ட் ஹெடர்களைக் கடக்காமல் இணைப்பை மூடும்போது இந்த நடத்தை ஏற்படுகிறது என்று கூறப்படுகிறது. சரி, மற்றும் wsgi_ க்கான இடையக அளவு கொண்ட பல்வேறு கவர்ச்சியான விஷயங்கள், இது எங்கள் விஷயத்தில் "எந்த வகையிலும்" என்ற வார்த்தைக்கு பொருந்தவில்லை.

பொதுவாக, பிரச்சனை ஒரு பிரச்சனையல்ல என்று முடிவு செய்தோம், எங்கள் தொகுதிகளில் அது முக்கியமானதாக இல்லை என்ற உண்மையை கணக்கில் எடுத்துக்கொண்டோம்.

பின்வரும் சிக்கலால் நான் குழப்பமடையும் வரை: சில சமயங்களில், http வழியாக இணைப்புகள் சிக்கல்கள் இல்லாமல் திறக்கப்படும், ஆனால் https வழியாக வேலை செய்ய முற்றிலும் மறுத்து, அற்புதமானவை: ஹோஸ்ட் example.com க்கு இணைப்பு #0 அப்படியே உள்ளது.
curl: (52) சர்வரில் இருந்து வெற்று பதில்

பதிவுகளில், இந்த விஷயத்தை ஐபி மூலம் மட்டுமே எங்களால் கண்காணிக்க முடிந்தது - மேலே உள்ள எடுத்துக்காட்டில் இருந்து பார்க்கக்கூடியது போல, கோரிக்கை அல்லது வேறு எந்த தரவுகளும் இல்லை. மோசமான நிலை மட்டுமே 0, ஆனால் நான் கோரிக்கையை குறுக்கிடவில்லை என்பது எனக்குத் தெரியும்! என்ன தவறு நடக்கக்கூடும் என்று நான் கண்டுபிடிக்க ஆரம்பித்தேன். மற்றும் எல்லாம் மிகவும் எளிமையானதாக மாறியது:

கேட்க 443 ssl http2 பின்னிணைப்பு=8192;

சரி, நீங்கள் ssl இணைப்புகளுக்கு http2 ஐப் பயன்படுத்தினால், கோரிக்கை இடையகங்களை உள்ளமைப்பது மட்டும் போதாது, அவை ngx_http_v2_module இல் கட்டமைக்கப்பட வேண்டும், அதாவது:

Синтаксис:	http2_max_field_size размер;
Умолчание:	http2_max_field_size 4k;
Контекст:	http, server

HPACKஐப் பயன்படுத்தி சுருக்கப்பட்ட கோரிக்கைத் தலைப்பின் அதிகபட்ச அளவைக் கட்டுப்படுத்துகிறது. கட்டுப்பாடு பெயர் மற்றும் மதிப்பு ஆகிய இரண்டிற்கும் சமமாக பொருந்தும். ஹஃப்மேன் குறியாக்கம் பயன்படுத்தப்பட்டால், தொகுக்கப்படாத பெயர் மற்றும் மதிப்பு சரங்களின் உண்மையான அளவு பெரியதாக இருக்கலாம். இயல்புநிலை வரம்பு பெரும்பாலான வினவல்களுக்கு ஏற்றது.

பொதுவாக, இதுதான். மற்றும் ஏன் அனைத்து? இணைப்பின் நீளம் நீளமாக இருந்ததால் - அதே 4k ஐ விட நீளமானது.

எடுத்துக்காட்டாக, 8kb (அல்லது போதுமானதாக இருக்கும்) என அமைப்பதன் மூலம், சிக்கலைத் தீர்க்கிறோம்.
இது போன்ற விஷயங்கள்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்