nginx config फाइल डिबग करने का सबसे अच्छा तरीका?


37

मेरे पास फिर से लिखने के नियमों का एक समूह है जिसे मुझे अपाचे से नग्नेक्स तक पोर्ट करना होगा।

यह एक बहुत ही दर्दनाक प्रक्रिया है क्योंकि मैं यह देखने में सक्षम नहीं हूं कि क्या मेरे पुनर्मिलन के नियम और "अगर" स्थितियां काम कर रही हैं जैसा कि मैं उन्हें चाहता हूं।

अपाचे ने अपने रीराइट मॉड्यूल के लिए डिबगिंग की थी। मैं nginx के लिए क्या कर सकते हैं?

जवाबों:


37

सक्षम करें rewrite_log:

rewrite_log on;

और error_logनिर्देश में डिबग स्तर सेट करें :

error_log /var/log/nginx/localhost.error_log notice;

अपाचे के इतना करीब;) मुझे निश्चित रूप से nginx
ओलिवियर पोंस

ध्यान दें कि इसका उपयोग डीबगिंग पुनर्लेखन से अधिक के लिए किया जा सकता है। आप "DEBUG DEBUG ब्रेक को फिर से लिखना" जोड़ सकते हैं कहीं भी आप nginx कॉन्फिग में पसंद करते हैं और देखते हैं कि यह कब हिट होता है। यह फिर से लिखने वाली रेखा प्रभावी रूप से कुछ भी नहीं करती है (यदि स्थान "DEBUG" का मिलान किया जाता है, तो इसे "DEBUG" से बदलें) लॉग करने के लिए एक लाइन को ट्रिगर करने के अलावा। आप तकनीकी रूप से भी इस तरह के चर का उत्पादन कर सकते हैं: "फिर से लिखना। * $ अनुरोध विराम;" या फिर से लिखना। * "'$ http_x_forwarded_for' $ request" ब्रेक; - हालांकि यह अनुरोध को विफल करने का कारण बनता है। Access_log के लिए चर को कस्टम लॉग प्रारूप में जोड़ना बेहतर होगा।
कर्टिस यलोप

14

डिबगिंग समर्थन सक्षम करें , फिर error_log में डीबग स्तर सेट करें।

error_log   /var/log/nginx/error.log debug;

अब आप लॉग को टेल कर सकते हैं और अपने अनुरोध भेज सकते हैं। वहाँ शायद अधिक विस्तार से आप चाहते हैं, लेकिन है कि कभी कभी एक lifesaver हो सकता है।

ओह, और आपको पता होना चाहिए कि अगर बुराई है , तो कम से कम किसी स्थान के संदर्भ में ...


3
noticeडिबगिंग रीराइट debugके error_levelलिए की तुलना में बहुत बेहतर है क्योंकि यह निम्न-स्तर की अप्रासंगिक डिबग जानकारी (जैसे SSL या gzip विवरण; 50+ लाइनें प्रति अनुरोध) को छोड़ देगा।
डान डस्केल्सस्कु

1

लॉगिंग और डिबगिंग के लिए अंतर्निहित समर्थन का उपयोग करना निश्चित रूप से सबसे उचित तरीका है। यदि आप शुरुआती चरणों में कुछ त्वरित रूटिंग डिबगिंग कर रहे हैं और केवल 4xx "पाठ" का उपयोग करके ब्राउज़र / क्लाइंट के माध्यम से बातचीत करना चाहते हैं ; निर्देश आपको वह उत्तर भी दे सकता है जो आप बहुत कम प्रयास के साथ चाहते हैं। उदाहरण के लिए,

http {
  server {
    listen 80;
    server_name mydomain.net;
    return 404 "mydomain 80 route";
  }

  server {
    listen 80 default_server;
    return 404 "default 80 route";
  }
}

लौटे वेबपेज में पाठ आपको बताएगा कि serverआपके अनुरोध को किसने ट्रिगर किया है।

उम्मीद है की यह मदद करेगा!
एन्ड्रेस

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.