Apache reverse proxy: no protocol handler
I am trying to configure a reverse proxy with apache, but I am getting a No protocol handler was valid for the URL
error, which I do not understand.
This is the relevant configuration of apache:
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/
The requests is reaching apache as:
POST /gonvaled/examples/jsonrpc/output/services/EchoService.py HTTP/1.1
And they should be forwarded to my internal service, located at:
0.0.0.0:8000/services/EchoService.py
These are the logs:
==> /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"
I found the problem. The proxy_http
module needs to be activated too in Apache (I had only proxy_html
and proxy
)
For me, on apache httpd 2.4
, this happened because i was missing the trailing slash:
Did not work:
<Proxy balancer://mycluster>
BalancerMember http://192.168.111.7
BalancerMember http://192.168.111.80
</Proxy>
ProxyPass / balancer://mycluster
ProxyPassReverse / balancer://mycluster
Worked!
<Proxy balancer://mycluster>
BalancerMember http://192.168.111.7
BalancerMember http://192.168.111.80
</Proxy>
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
(added /
at the end)