सवाल प्रॉक्सी त्रुटि 502 "कारण: दूरस्थ सर्वर से पढ़ने में त्रुटि" अपाचे 2.2.3 (डेबियन) mod_proxy और जेटी 6.1.18 के साथ


अपाचे पोर्ट: 80 पर अनुरोध प्राप्त कर रहा है और पोर्टी पर जेटी को प्रॉक्सी कर रहा है: 8080

The proxy server received an invalid response from an upstream server
The proxy server could not handle the request GET /.

मेरी दुविधा: सब कुछ ठीक काम करता है सामान्य रूप से (तेज़ अनुरोध, कुछ सेकंड या सेकंड के कुछ मिनट लंबे अनुरोध संसाधित होते हैं ठीक)। समस्या का पाए जाते हैं जब अनुरोध प्रसंस्करण लंबा लगता है (कुछ मिनट?)।

अगर मैं इसके बजाय अनुरोध जारी करता हूं सीधे बंदरगाह पर जेटी के लिए: 8080 अनुरोध ठीक संसाधित किया गया है। तो समस्या है उपयुक्त अपाचे और जेट्टी के बीच कहीं भी बैठना जहां मैं उपयोग कर रहा हूं mod_proxy। इसे कैसे हल करें?

मैंने पहले ही कुछ "चाल" की कोशिश की है भाग्य के बिना KeepAlive सेटिंग्स से संबंधित है। यहां मेरी वर्तमान कॉन्फ़िगरेशन, कोई सुझाव है?

#keepalive Off                     ## I have tried this, does not help
#SetEnv force-proxy-request-1.0 1  ## I have tried this, does not help
#SetEnv proxy-nokeepalive 1        ## I have tried this, does not help
#SetEnv proxy-initial-not-pooled 1 ## I have tried this, does not help
KeepAlive 20                       ## I have tried this, does not help
KeepAliveTimeout 600               ## I have tried this, does not help
ProxyTimeout 600                   ## I have tried this, does not help

NameVirtualHost *:80
<VirtualHost _default_:80>
    ServerAdmin webmaster@mydomain.fi

    ServerName www.mydomain.fi

    ServerAlias mydomain.fi mydomain.com mydomain www.mydomain.com

    ProxyRequests On
    ProxyVia On
    <Proxy *>
            Order deny,allow
            Allow from all
    </Proxy>

    ProxyRequests Off
    ProxyPass / http://www.mydomain.fi:8080/ retry=1 acquire=3000 timeout=600
    ProxyPassReverse / http://www.mydomain.fi:8080/

    RewriteEngine On
    RewriteCond %{SERVER_NAME} !^www\.mydomain\.fi
    RewriteRule /(.*) http://www.mydomain.fi/$1 [redirect=301L]

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined
    ServerSignature On

</VirtualHost>

असफल अनुरोध से डीबग लॉग भी यहां दिया गया है:

74.125.43.99 - - [29/Sep/2010:20:15:40 +0300] "GET /?wicket:bookmarkablePage=newWindow:com.mydomain.view.application.reports.SaveReportPage HTTP/1.1" 502 355 "https://www.mydomain.fi/?wicket:interface=:0:2:::" "Mozilla/5.0 (Windows; U; Windows NT 6.1; fi; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10"
[Wed Sep 29 20:20:40 2010] [error] [client 74.125.43.99] proxy: error reading status line from remote server www.mydomain.fi, referer: https://www.mydomain.fi/?wicket:interface=:0:2:::
[Wed Sep 29 20:20:40 2010] [error] [client 74.125.43.99] proxy: Error reading from remote server returned by /, referer: https://www.mydomain.fi/?wicket:interface=:0:2:::

72
2017-09-29 17:35


मूल


हाय .. मैं अभी भी इस के साथ अटक गया हूँ। सभी उपरोक्त सेटिंग्स ने कोशिश की और जेटी maxIdleTime भी बढ़ने में मदद नहीं की। किसी भी पॉइंटर्स को आगे क्या करना है? - Martin


जवाब:


मैंने समस्या हल कर ली है। Keepalive=On में डाला जाना चाहिए ProxyPass विन्यास लाइन:

ProxyPass / http://www.dom.fi:8080/ retry=1 acquire=3000 timeout=600 Keepalive=On

देखना है कि

Keepalive=On

क्या आप वहां मौजूद हैं? यह जटिल है ;)


81
2018-02-18 22:27



मेरा मानना ​​है कि आप स्वीकार किए गए अपने उत्तरों को चिह्नित कर सकते हैं। यह अन्य लोगों को खोजने के लिए सिस्टम में हल किए गए प्रश्न को चिह्नित करता है। - sysadmin1138♦
आप इसे कहां रखते हैं? - AlxVallejo
@AlxVallejo आपको अपनी कॉन्फ़िगरेशन फ़ाइलों को यहां /etc/apache2/sites-enabled/[sitename].conf ढूंढना चाहिए - Steven
हमारे पास बिल्कुल वही प्रॉक्सी त्रुटियां हैं। वे बहुत ही कम होते हैं (एक हजार अनुरोधों में से एक)। क्यूं कर बिल्कुल यही है Keepalive=On महत्वपूर्ण? - dokaspar
यह नहीं हो सकता है timeout=600 या retry=1 जो इसके बजाय इसे ठीक करता है? (या कॉम्बो) - MattBianco


क्या आपने सेटिंग करने की कोशिश की है setenv proxy-initial-not-pooled 1?

संदर्भ यहाँ


4
2017-09-29 17:46



नहीं, इससे मदद नहीं मिली। फिर यह दौड़ की स्थिति के बारे में नहीं है, यह लंबी देरी है और इसमें कुछ होता है (जेटी और mod_proxy के बीच किसी तरह की गलतफहमी)।


यह त्रुटि तब भी हो सकती है जब आप अपने प्रॉक्सी यूआरएल को समाप्त नहीं करते हैं /। या तो दोनों पथ एक के साथ खत्म होना चाहिए / या न तो।


3
2018-06-14 23:37





लॉग को देखते हुए, कुछ मिनट 5 मिनट (= 300 सेकंड) पर होता है। प्रतिक्रिया के लिए इंतजार करने के लिए यह काफी लंबा समय है। जब आप सीधे जेटी सर्वर तक पहुंचते हैं, तो क्या यह संसाधन वास्तव में प्रतिक्रिया उत्पन्न करने में लंबा समय लगता है?

यदि पांच मिनट वास्तव में संभावित प्रतिक्रिया समय के भीतर है, तो आप प्रॉक्सीटाइम कॉन्फ़िगरेशन निर्देश को ट्वीव करने का प्रयास कर सकते हैं।

आपके नेटवर्क सेट-अप के आधार पर, यह हो सकता है कि किसी भी रखरखाव प्रणाली का उपयोग करने का प्रयास करने का कोई कारण न हो (क्या ऐप सर्वर और प्रॉक्सी के बीच फ़ायरवॉल है जो बहुत लंबे समय तक निष्क्रिय होने वाले सत्रों को छोड़ने के लिए कॉन्फ़िगर किया जा सकता है?) , लेकिन प्रॉक्सीटाइमआउट प्रॉक्सी के व्यवहार को प्रभावित करेगा।

यदि एक ही प्रॉक्सी अन्य बैकएंड्स परोसता है, तो मौजूदा प्रॉक्सीटाइमआउट को रखना बेहतर होगा, और प्रॉक्सीपास निर्देश में टाइमआउट कॉन्फ़िगर करें (mod_proxy दस्तावेज़ देखें)।

यदि, हालांकि, प्रॉक्सी के बिना प्रतिक्रिया लगातार पांच मिनट से कम कट ऑफ सीमा के रूप में कुछ कम होती है, तो प्रॉक्सी और ऐप सर्वर के बीच वास्तव में कुछ अजीब हस्तक्षेप हो सकता है, लेकिन आप कुछ भी नहीं दे रहे हैं यह पहचानने के लिए मूल्य क्या हो सकता है।


1
2017-10-10 18:51



"जब आप सीधे जेटी सर्वर तक पहुंचते हैं, तो क्या यह संसाधन वास्तव में प्रतिक्रिया उत्पन्न करने में लंबा समय लगता है?" -- हाँ। मैंने इस प्रॉक्सीटाइमआउट को 600 पर सेट करने का भी प्रयास किया। मदद नहीं करता है। प्रॉक्सी और जेटी के बीच कोई फ़ायरवॉल नहीं है। टाइमआउट को प्रॉक्सीपास में भी कॉन्फ़िगर किया गया है।
"आप यह पहचानने के लिए मूल्य के कुछ भी नहीं दे रहे हैं कि यह क्या हो सकता है": मुझे नहीं पता कि यह क्या हो सकता है। मुझे बस सर्वर से एक त्रुटि संदेश मिल रहा है: प्रॉक्सी त्रुटि प्रॉक्सी सर्वर को अपस्ट्रीम सर्वर से एक अवैध प्रतिक्रिया मिली है। प्रॉक्सी सर्वर अनुरोध प्राप्त नहीं कर सका /। कारण: दूरस्थ सर्वर से पढ़ने में त्रुटि
प्रॉक्सी टाइमआउट बढ़ाने के लिए, क्या यह 502 त्रुटि प्राप्त करने से पहले आपके ब्राउज़र को स्पिन करने का समय भी बदल गया?
फिर अनुप्रयोग सर्वर में क्या हो रहा है, यह जानने के तरीकों से: आप कुछ थ्रेड डंप ले सकते हैं, और ब्राउज़र से प्रतीक्षा करते समय निष्पादित होने पर उन्हें देखें। वैकल्पिक रूप से, धीमेपन के कारण को इंगित करने के लिए अपने कोड का पता लगाने में सक्षम होने के लिए पर्याप्त डीबग लॉगिंग स्टेटमेंट जोड़ें।
मुझे पता है कि यह धीमा क्यों है। मुझे नहीं पता कि अपाचे प्रॉक्सी प्रतिक्रिया आखिरकार क्यों प्रतिक्रिया दे रही है।


मेरे लिए हेडर वैल्यू को हटाकर Transfer-Encoding" (binary) मेरे सर्वर-ऐप (PHP) में समस्या हल हो गई:

[proxy_http: त्रुटि] [पिड 17623] (22) अवैध तर्क: [क्लाइंट   127.0.0.1:44929] एएच 01102: रिमोट सर्वर 0.0.0.0:80 से स्टेटस लाइन पढ़ने में त्रुटि

अन्य सभी सुझाव जैसे SetEnv proxy-initial-not-pooled या Keep-Alive नहीं किया।


0
2018-05-21 12:27





यदि उपर्युक्त समाधान काम नहीं करते हैं, तो आप जिस चीज को आजमा सकते हैं, यह सुनिश्चित करने के लिए अपने सभी अपाचे मॉड्यूल को सक्षम करना है कि कुछ मॉड्यूल नहीं है जो आपको किसी तरह से गलती से अक्षम कर दिया गया है।

उदाहरण के लिए, मुझे अपनी समस्या का कारण कैसे मिला, मेरे सभी अपाचे कॉन्फ़िगरेशन फ़ाइलों में लोड मॉड्यूल के साथ #LoadModule के सभी उदाहरणों को प्रतिस्थापित करना था। चूंकि इससे मेरे लिए समस्या हल हो गई, इसलिए मुझे पता था कि मेरी समस्या "KeepAlive" निर्देश तर्क नहीं थी, बल्कि, मेरी समस्या एक लापता निर्भरता थी।

क्योंकि, याद रखें, इसलिए। फ़ाइलें मूल रूप से स्थैतिक पुस्तकालय हैं। मॉड्यूल सक्षम होने का मतलब यह नहीं है कि इसका उपयोग किया जाएगा, लेकिन एक अक्षम होने का मतलब यह है कि इसका उपयोग नहीं किया जा सकता है, और इसलिए, उस पर निर्भर कुछ भी आवश्यक रूप से विफल हो जाएगा।

नोट: इस जवाब के कारण इस उत्तर को कुछ कम वोट मिले हैं कि मेरा प्रारंभिक उत्तर हमेशा के लिए सक्षम सभी मॉड्यूल को छोड़ने का सुझाव देना प्रतीत होता है। जबकि आप सैद्धांतिक रूप से ऐसा कुछ भी तोड़ने के बिना कर सकते हैं, यह स्पष्ट रूप से एक सर्वोत्तम अभ्यास समाधान नहीं है।

तो, कृपया समझें, मैं केवल इसे समस्या निवारण चरण के रूप में सुझाव दे रहा हूं, अंतिम समाधान नहीं।

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

आपको यह भी पता चलेगा कि आपके अपाचे कॉन्फ़िगरेशन फ़ाइलों को ट्रैक करने के लिए गिट का उपयोग करके उन निर्देशिकाओं को साफ़ कर दिया गया है, क्योंकि आपको अब उन पुराने-शैली वाली .bak और .default फ़ाइलों की आवश्यकता नहीं होगी।


-1
2017-12-24 09:56



प्रत्येक लाइब्रेरी एक अलग सुविधा लाती है, न कि प्रॉक्सी से संबंधित है - Arnold Roa