質問: apacheリバースプロキシ:プロトコルハンドラーなし apacheでリバースプロキシを構成しようとしていますが、no protocol handler was valid for the urlエラー、わかりません。これは、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/ リクエストは次のようにapacheに到達しています: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"
回答: 答えを探している人にとって、もう1つの可能性は、バックエンドへのurlサービス名も欠落していることです。 loglevel debug、および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/mod_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 :)がロードされていない、または サービス名のスペルを間違えています。