अपाचे रिवर्स प्रॉक्सी: कोई प्रोटोकॉल हैंडलर नहीं


20

मैं अपाचे के साथ एक रिवर्स प्रॉक्सी को कॉन्फ़िगर करने की कोशिश कर रहा हूं, लेकिन मुझे एक No protocol handler was valid for the URLत्रुटि मिल रही है , जो मुझे समझ नहीं आ रही है।

यह अपाचे का प्रासंगिक विन्यास है:

ProxyRequests Off
ProxyPreserveHost On

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

ProxyPass        /gonvaled/examples/jsonrpc/output/services/ http://localhost:8000/services/
ProxyPassReverse /gonvaled/examples/jsonrpc/output/services/ http://localhost:8000/services/

अनुरोध अपाचे तक पहुंच रहे हैं:

POST /gonvaled/examples/jsonrpc/output/services/EchoService.py HTTP/1.1

और उन्हें मेरी आंतरिक सेवा में भेज दिया जाना चाहिए:

0.0.0.0:8000/services/EchoService.py

ये लॉग हैं:

==> /var/log/apache2/error.log <==
[Wed Jun 20 02:05:20 2012] [debug] proxy_util.c(1506): [client 127.0.0.1] proxy: http: found worker http://localhost:8000/services/ for http://localhost:8000/services/EchoService.py, referer: http://localhost/gonvaled/examples/jsonrpc/output/JSONRPCExample.safari.cache.html
[Wed Jun 20 02:05:20 2012] [debug] mod_proxy.c(998): Running scheme http handler (attempt 0)
[Wed Jun 20 02:05:20 2012] [warn] proxy: No protocol handler was valid for the URL /gonvaled/examples/jsonrpc/output/services/EchoService.py. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.
[Wed Jun 20 02:05:20 2012] [debug] mod_deflate.c(615): [client 127.0.0.1] Zlib: Compressed 614 to 373 : URL /gonvaled/examples/jsonrpc/output/services/EchoService.py, referer: http://localhost/gonvaled/examples/jsonrpc/output/JSONRPCExample.safari.cache.html

==> /var/log/apache2/access.log <==
127.0.0.1 - - [20/Jun/2012:02:05:20 +0200] "POST /gonvaled/examples/jsonrpc/output/services/EchoService.py HTTP/1.1" 500 598 "http://localhost/gonvaled/examples/jsonrpc/output/JSONRPCExample.safari.cache.html" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.162 Safari/535.19"

जवाबों:


26

मुझे समस्या मिल गई। proxy_httpमॉड्यूल अपाचे में भी सक्रिय होने की जरूरत है (मैं केवल था proxy_htmlऔर proxy)


23

मेरे लिए, अपाचे पर httpd 2.4, यह इसलिए हुआ क्योंकि मैं अनुगामी स्लैश को याद कर रहा था:

काम नहीं किया:

    <Proxy balancer://mycluster>
        BalancerMember http://192.168.111.7
        BalancerMember http://192.168.111.80
    </Proxy>
    ProxyPass / balancer://mycluster
    ProxyPassReverse / balancer://mycluster

काम किया!

    <Proxy balancer://mycluster>
        BalancerMember http://192.168.111.7
        BalancerMember http://192.168.111.80
    </Proxy>
    ProxyPass / balancer://mycluster/
    ProxyPassReverse / balancer://mycluster/

( /अंत में जोड़ा गया )


मेरे लिए, Apache 2.2.15, <kbd> / </ kbd> अंतिम कार्यों में। धन्यवाद!

अपाचे / 2.4.10 (डेबियन) पर मेरी मदद की। यह प्रलेखित होने की आवश्यकता है! त्रुटि संदेश अत्यंत अप्रिय है
डेवलपर

2

उन लोगों के लिए जो उत्तर की तलाश में आते हैं, एक और संभावना है कि बैकएंड के लिए URL सेवा नाम भी गायब है। LogLevel डीबग, और mod_proxy और mod_proxy_fcgi के साथ, मैं निम्नलिखित देख रहा था:

[debug] proxy: fgci: found worker fgci://127.0.0.1:9000/var/www/html/.../index.php [debug] mod_proxy.c(1026): Running scheme fgci handler (attempt 0) [debug] mod_proxy_fcgi.c(800): [client ...] AH01076: url: fgci://127.0.0.1:9000/var/www/html/.../index.php proxyname: (null) proxyport: 0 [debug] mod_proxy_fcgi.c(805): [client ...] AH01077: declining URL fgci://127.0.0.1:9000/var/www/html/.../index.php [warn] proxy: No protocol handler was valid for the URL /.../index.php. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

शुक्र है कि mod_proxy_fastcgi (मैं RHEL6 पर Apache 2.2 के लिए बैकपोर्ट का उपयोग कर रहा हूं) के लिए कोड https://github.com/ceph/mod-proxy-fcgi/blob/master/mc_proxy_fcgi.c#L805 पर उपलब्ध है , जो यह है कोड का टुकड़ा:

if (strncasecmp(url, "fcgi:", 5) != 0) {
    ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(01077) "declining URL %s", url);
    return DECLINED;
}

यदि आप लॉग को करीब से देखते हैं - मैंने केवल उस पर ध्यान दिया जब संदेश को जारी करने वाले कोड को देखते हुए - आप देखेंगे कि क्या होना चाहिए जैसे fcgi://...कि गलत हैfgci://...

तो जब आप देखते हैं declining URLतो इसका मतलब है:

  • आपके पास एक हैंडलर लोड नहीं है जो सेवा स्वीकार करता है (जैसे। fcgi :), या
  • आपने सेवा का नाम गलत लिखा है।

1
मैं इस उत्तर के कारण "जब आप इस त्रुटि को देखते हैं तो इसका अर्थ है ..." मुझे लगता है कि इससे अधिकांश खोजकर्ताओं को सही दिशा में आगे बढ़ना चाहिए।
तीन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.