J'essaye de proxy un sous-répertoire à un autre serveur. Mon httpd.conf:
RewriteEngine On
ProxyPreserveHost On
RewriteRule .*subdir/ https://anotherserver/subdir/ [P]
Le problème est qu'Apache enregistre toujours ceci:
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/
Donc, après avoir cherché sur Internet, j'ai activé ces modules:
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
(Je sais que je n'ai pas besoin de tous mais je les ai juste activés pour être sûr de ne pas en manquer un)
Mais cette erreur apparaît toujours et les clients obtiennent un HTTP 500.
Comment puis-je réparer cela?
mod_ssl
etSSLProxyEngine
avecProxyPass
Réponses:
Cela peut arriver si vous n'avez pas
mod_proxy_http
activésudo a2enmod proxy_http
Pour que mon équilibreur de charge basé sur https fonctionne, je devais activer les éléments suivants:
la source
LoadModule ssl_module modules/mod_ssl.so
. J'ai également dû utiliserSSLProxyEngine on
.mod_slotmem_shm
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
dans httpd.confsudo a2enmod proxy_connect
, qui consiste à tunneliser https en utilisant CONNECTPour que mon installation Apache2.4 + php5-fpm commence à fonctionner, j'avais besoin d'activer les modules Apache suivants:
Pas besoin
proxy_http
, et c'est ce qui envoie tous les.php
fichiers directement vers php5-fpm:la source
Dans mon cas, j'avais besoin d'un
proxy_ajp
module.la source
Cela se produisait pour moi dans ma configuration Apache / 2.4.18 (Ubuntu). Dans mon cas, l'erreur que je voyais était:
La configuration associée à ceci était:
"
No protocol handler was valid for the URL /~socket.io/
" signifiait qu'Apache ne pouvait pas gérer la requête envoyée à "ws://127.0.0.1:8090/~socket.io/
"J'avais
proxy_http
chargé, mais aussi nécessaireproxy_wstunnel
. Une fois que cela a été activé, tout allait bien.la source
Pour clarifier pour référence future, a2enmod, comme suggéré dans plusieurs réponses ci-dessus, est pour Debian / Ubuntu. Red Hat ne l'utilise pas pour activer les modules Apache - à la place, il utilise des instructions LoadModule dans httpd.conf.
Plus ici: /server/56394/how-do-i-enable-apache-modules-from-the-command-line-in-redhat
La résolution / bonne réponse se trouve dans les commentaires sur le PO:
Je pense que vous avez besoin de mod_ssl et SSLProxyEngine avec ProxyPass - Deadooshka 29 mai 14 à 11:35
@Deadooshka Oui, cela fonctionne. Si vous postez ceci comme réponse, je peux l'accepter - das_j 29 mai 14 à 12:04
la source
Je poste une réponse ici, car j'ai eu le même message d'erreur pour une raison différente.
Ce message d'erreur peut survenir, par exemple, si vous utilisez apache httpd pour renvoyer les requêtes d'une source sur le protocole A vers une cible sur le protocole B.
Voici l'exemple de ma situation:
Dans le cas ci-dessus, ce qui se passait était simplement le suivant. J'avais activé le proxy mod pour renvoyer les requêtes websocket à nodejs en fonction du chemin / sockjs-node.
Le problème est que le nœud n'utilise pas le chemin / sockjs-node exclusivement pour les requêtes websocket. Il utilise également ce chemin pour héberger des points d'entrée REST qui fournissent des informations sur les Websockets.
De cette manière, lorsque l'application essaie d'ouvrir http: // localhost: 7001 / sockjs-node / info , apache httpd essaie d'acheminer le reste de l'appel du protocole HTTP vers un appel de point de terminaison Webscoket. Node n'a pas accepté cela.
Cela a conduit à l'exception ci-dessus.
Gardez donc à l'esprit que même si vous activez les bons modules, si vous essayez de faire une mauvaise transmission, cela se terminera par apache httpd vous informant que le protocole que vous avez essayé d'utiliser sur le serveur cible n'est pas valide.
la source
J'ai essayé de le faire
uwsgi://
fonctionner, mais d'une manière ou d'une autre, le manuel a pensé qu'il était clair pour moi que j'avais réellement besoinmod_proxy_uwsgi
. Ce n'était pas. Voici comment procéder: Comment compiler mod_proxy_uwsgi ou mod_uwsgi?la source
Pour moi, toutes les réponses mentionnées ci-dessus étaient activées sur xampp ne fonctionnant toujours pas. L'activation du module ci-dessous a permis à l'hôte virtuel de fonctionner à nouveau
la source
Dans mon cas, tous les modules ont été correctement configurés ( https://www.digitalocean.com/community/tutorials/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension est un bon démarreur) et j'ai eu la redirection de travail pour une URL de base , disons
/mysite/
mais j'ai eu les erreurs pour n'importe quel enfant ULR, disons/mysite/login/
http://reverse-proxy.dns.com/mysite/
a été correctement redirigé vers les serveurs distants en cas d'http://reverse-proxy.dns.com/mysite/login/
échec du proxy inverse Apache2 avec le message d'erreur OP.Le problème était le
/
caractère de fin dans la directive proxypass "/ mysite /". La configuration de travail pour l'URL enfant est:Les traînées
/
sont vraiment délicates.la source