Ich versuche, ein Unterverzeichnis auf einen anderen Server zu übertragen. Meine httpd.conf:
RewriteEngine On
ProxyPreserveHost On
RewriteRule .*subdir/ https://anotherserver/subdir/ [P]
Das Problem ist, dass Apache dies immer protokolliert:
AH01144: No protocol handler was valid for the URL /subdir/. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule., referer: http://localhost/
Nachdem ich im Internet gesucht habe, habe ich diese Module aktiviert:
LoadModule headers_module modules/mod_headers.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_express_module modules/mod_proxy_express.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_html_module modules/mod_proxy_html.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
LoadModule rewrite_module modules/mod_rewrite.so
(Ich weiß, dass ich nicht alle brauche, aber ich habe sie nur aktiviert, um sicherzugehen, dass mir keine fehlt.)
Dieser Fehler tritt jedoch weiterhin auf und Clients erhalten einen HTTP 500.
Wie kann ich das beheben?
mod_ssl
undSSLProxyEngine
mitProxyPass
Antworten:
Dies kann passieren, wenn Sie nicht
mod_proxy_http
aktiviert habensudo a2enmod proxy_http
Damit mein https-basierter Load Balancer funktioniert, musste ich Folgendes aktivieren:
quelle
LoadModule ssl_module modules/mod_ssl.so
. Ich musste auch verwendenSSLProxyEngine on
.mod_slotmem_shm
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
in httpd.confsudo a2enmod proxy_connect
, um https mit CONNECTDamit meine Apache2.4 + php5-fpm-Installation funktioniert, musste ich die folgenden Apache-Module aktivieren:
Keine Notwendigkeit
proxy_http
, und das ist es, was alle.php
Dateien direkt an php5-fpm sendet :quelle
In meinem Fall brauchte ich ein
proxy_ajp
Modul.quelle
Dies geschah für mich in meinem Apache / 2.4.18 (Ubuntu) Setup. In meinem Fall war der Fehler, den ich sah:
Die diesbezügliche Konfiguration war:
"
No protocol handler was valid for the URL /~socket.io/
" bedeutete, dass Apache die an "ws://127.0.0.1:8090/~socket.io/
" gesendete Anfrage nicht verarbeiten konnte.Ich hatte
proxy_http
geladen, aber auch gebrauchtproxy_wstunnel
. Sobald dies aktiviert war, war alles gut.quelle
Zur Verdeutlichung ist a2enmod, wie in mehreren Antworten oben vorgeschlagen, für Debian / Ubuntu vorgesehen. Red Hat verwendet dies nicht, um Apache-Module zu aktivieren, sondern verwendet LoadModule-Anweisungen in httpd.conf.
Mehr hier: /server/56394/how-do-i-enable-apache-modules-from-the-command-line-in-redhat
Die Auflösung / richtige Antwort finden Sie in den Kommentaren zum OP:
Ich denke, Sie brauchen mod_ssl und SSLProxyEngine mit ProxyPass - Deadooshka 29. Mai 14 um 11:35 Uhr
@Deadooshka Ja, das funktioniert. Wenn Sie dies als Antwort posten, kann ich es akzeptieren - das_j 29. Mai 14 um 12:04 Uhr
quelle
Ich poste hier eine Antwort, da ich aus einem anderen Grund dieselbe Fehlermeldung hatte.
Diese Fehlermeldung kann beispielsweise auftreten, wenn Sie Apache httpd verwenden, um Anforderungen von einer Quelle in Protokoll A an ein Ziel in Protokoll B zu übertragen.
Hier ist das Beispiel meiner Situation:
Im obigen Fall geschah einfach Folgendes. Ich hatte mod proxy aktiviert, um Websocket-Anfragen an nodejs basierend auf path / sockjs-node zu proxys.
Das Problem ist, dass der Knoten den Pfad / sockjs-Knoten nicht ausschließlich für Websocket-Anforderungen verwendet. Dieser Pfad wird auch zum Hosten von REST-Einstiegspunkten verwendet, die Informationen zu Websockets bereitstellen.
Auf diese Weise würde Apache httpd versuchen, den Restaufruf vom HTTP-Protokoll an einen Webscoket-Endpunktaufruf weiterzuleiten , wenn die Anwendung versuchen würde, http: // localhost: 7001 / sockjs-node / info zu öffnen. Node hat dies nicht akzeptiert.
Dies führte zu der obigen Ausnahme.
Beachten Sie also, dass selbst wenn Sie die richtigen Module aktivieren und versuchen, die falsche Weiterleitung durchzuführen, Apache httpd Sie darüber informiert, dass das Protokoll, das Sie auf dem Zielserver verwendet haben, ungültig ist.
quelle
Ich habe versucht, eine
uwsgi://
Arbeit zu finden, aber irgendwie dachte das Handbuch, es sei mir klar, dass ich es tatsächlich brauchtemod_proxy_uwsgi
. Es war nicht. So geht's: Wie kompiliere ich mod_proxy_uwsgi oder mod_uwsgi?quelle
Für mich waren alle oben genannten Antworten auf xampp aktiviert und funktionierten immer noch nicht. Durch Aktivieren des folgenden Moduls funktionierte der virtuelle Host wieder
quelle