सवाल nginx: सभी शीर्षकों के साथ पूर्ण अनुरोध / प्रतिक्रिया लॉग इन करें?


हमारे पास एक एप्लिकेशन सर्वर है जो कभी-कभी लटकता है। हमें संदेह है कि यह किसी ग्राहक से खराब अनुरोध के कारण है।

क्या nginx फ़ाइलों को पूर्ण अनुरोध / प्रतिक्रिया (जैसे फिडलर कैप्चर) लॉग कर सकता है, इसलिए हम लटकने से पहले भेजे गए अनुरोध देख सकते हैं?

(हमें शायद पॅक से बचने और उस दृष्टिकोण से बचने की जरूरत है और यह सब nginx में करें)

यदि nginx इसके लिए सही उपकरण नहीं है, तो क्या (नेटवर्क विश्लेषक के अलावा) हो सकता है?


29
2017-10-14 05:24


मूल


mitmproxy रिवर्स प्रॉक्सी मोड में वह करना चाहिए जो आप खोज रहे हैं। - Vivek Thomas
@ विवेक थॉमस यह एक nginx सवाल है .... हम पहले से ही nginx का उपयोग कर रहे हैं और बदलने के लिए नहीं जा रहे हैं। - samsmith
@ सैमस्मिथ ओल्ड सवाल, लेकिन शायद यह किसी और की मदद करता है: आप नहीं nginx छोड़ देना है। परिस्थितियों के आधार पर, आप यातायात को रोकने और डिबगिंग का समर्थन करने के लिए mitmproxy को अनुमति देने के लिए, अस्थायी रूप से nginx को किसी अन्य पोर्ट पर फिर से रूट कर सकते हैं। फिर, एक बार पूरा होने पर, आप मूल बंदरगाह और शट डाउन mitmproxy पर nginx को फिर से रूट कर सकते हैं। - Per Lundberg
आप modsecurity मॉड्यूल का उपयोग कर सकते हैं, जो पूर्ण अनुरोध / प्रतिक्रिया लॉग कर सकते हैं, देखें nginx.com/blog/modsecurity-logging-and-debugging - Willem


जवाब:


आगंतुकों द्वारा अनुरोधित निकाय निकाय प्राप्त करने के लिए, उपयोग करें client_body_in_file_only on; और var को जोड़कर लॉग में लिखी गई "अस्थायी" फ़ाइल लॉग करें $request_body_file लॉग प्रारूप में। "अस्थायी" फ़ाइलें डिफ़ॉल्ट रूप से client_temp निर्देशिका में स्थित होंगी।

आप अनुरोध हेडर लॉग कर सकते हैं $http_<header> भी और हेडर भेज दिया $sent_http_<header>

यदि आपके पास शरीर और हेडर का अनुरोध है तो आपको इसे फिर से चलाने और अपने आगंतुक के जवाब प्राप्त करने में सक्षम होना चाहिए।

कुछ भी पसंद है gor अत्यधिक विचार किया जाना चाहिए ताकि आप किसी अन्य माहौल पर यातायात को फिर से चला सकें जहां आप इन अस्थायी फ़ाइलों को उत्पादन में आईओ मुद्दों के बिना लिख ​​सकते हैं (nginx उन्हें शुद्ध नहीं करेगा on मूल्य यही कारण है कि यह इस मामले में "अस्थायी" नहीं है)।


33
2017-10-14 08:10



जेवियर, धन्यवाद! काम करता है! अब मेरे पास फाइलें हैं, मैं उन्हें कैसे दोहरा सकता हूं? - samsmith
@jwadsack उत्तर को ध्यान से पढ़ें। - Xavier Lucas
@XavierLucas मैंने सोचा था कि आप दो अलग-अलग दृष्टिकोण प्रदान कर रहे थे। मुझे नहीं पता था कि आप कह रहे थे दोनों  client_body_in_file_only तथा $http_<header> की आवश्यकता होगी मुझे वह मिल गया। - jwadsack
क्या आप एक और सटीक कोड साझा कर सकते हैं? - Velkan
निश्चित रूप से $ http <header> केवल तभी उपयोगी होता है जब आप पहले से ही सभी शीर्षलेख नामों को जानते हों - Ed Randall


mitmproxy आप जो पूछ रहे हैं उसे करने का सही टूल प्रतीत होता है।

mitmproxy एक इंटरैक्टिव, एसएसएल-सक्षम मैन-इन-द-बीच प्रॉक्सी है   एक कंसोल इंटरफ़ेस के साथ HTTP।

mitmdump mitmproxy का कमांड लाइन संस्करण है। के लिए tcpdump सोचो   एचटीटीपी।

विशेषताएं

  • इंटरसेप्ट HTTP अनुरोध और प्रतिक्रियाएं और उन्हें फ्लाई पर संशोधित करें।
  • बाद में रीप्ले और विश्लेषण के लिए पूर्ण HTTP बातचीत सहेजें।
  • HTTP बातचीत के क्लाइंट-साइड को दोहराएं। पहले दर्ज किए गए सर्वर के HTTP प्रतिक्रियाओं को दोहराएं।
  • निर्दिष्ट सर्वर पर यातायात को आगे बढ़ाने के लिए प्रॉक्सी मोड को रिवर्स करें। 
  • ओएसएक्स और लिनक्स पर पारदर्शी प्रॉक्सी मोड।
  • पायथन का उपयोग कर HTTP यातायात में लिखित परिवर्तन करें।
  • फ्लाई पर अवरोध के लिए एसएसएल प्रमाण पत्र उत्पन्न होते हैं।

रिवर्स प्रॉक्सी मोड आपको फिडलर की तरह अनुरोध और प्रतिक्रिया को कैप्चर करने देगा।


15
2017-10-14 06:02