Ich versuche, einen Reverse-Proxy mit Apache zu konfigurieren, erhalte jedoch eine No protocol handler was valid for the URL
Fehlermeldung, die ich nicht verstehe.
Dies ist die relevante Konfiguration von 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/
Die Anfragen erreichen Apache als:
POST /gonvaled/examples/jsonrpc/output/services/EchoService.py HTTP/1.1
Und sie sollten an meinen internen Dienst weitergeleitet werden, der sich unter folgender Adresse befindet:
0.0.0.0:8000/services/EchoService.py
Dies sind die Protokolle:
==> /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"
apache-http-server
reverse-proxy
dangonfast
quelle
quelle
Für diejenigen, die nach Antworten suchen, ist eine andere Möglichkeit, dass der URL-Dienstname für das Back-End fehlt. Bei LogLevel Debug und mod_proxy und mod_proxy_fcgi wurde Folgendes angezeigt:
[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.
Zum Glück ist der Code für mod_proxy_fastcgi (Ich bin für Apache 2.2 auf RHEL6 ein Backport verwenden) ist verfügbar unter https://github.com/ceph/mod-proxy-fcgi/blob/master/mod_proxy_fcgi.c#L805 , was das ist Stück Code:
Wenn Sie sich die Protokolle genau ansehen - ich habe es erst bemerkt, als ich den Code betrachtete, der die Meldung ausgibt -, werden Sie
fcgi://...
feststellen, dass das, was sein sollte, falsch geschrieben istfgci://...
Wenn Sie also sehen
declining URL
, bedeutet dies entweder:quelle