Estoy tratando de proxy un subdirectorio a otro servidor. Mi httpd.conf:
RewriteEngine On
ProxyPreserveHost On
RewriteRule .*subdir/ https://anotherserver/subdir/ [P]
El problema es que Apache siempre registra esto:
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/
Entonces, después de buscar en Internet, he activado estos módulos:
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
(Sé que no los necesito a todos, pero los activé para asegurarme de que no me falta ninguno)
Pero este error aún aparece y los clientes obtienen un HTTP 500.
¿Cómo puedo arreglar esto?
mod_ssl
ySSLProxyEngine
conProxyPass
Respuestas:
Esto puede suceder si no ha
mod_proxy_http
habilitadosudo a2enmod proxy_http
Para que mi equilibrador de carga basado en https funcione, tuve que habilitar lo siguiente:
fuente
LoadModule ssl_module modules/mod_ssl.so
. También tuve que usarSSLProxyEngine on
.mod_slotmem_shm
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
en httpd.confsudo a2enmod proxy_connect
, que es hacer un túnel https usando CONNECTPara que mi instalación de Apache2.4 + php5-fpm comenzara a funcionar, necesitaba activar los siguientes módulos de Apache:
No es necesario
proxy_http
, y esto es lo que envía todos los.php
archivos directamente a php5-fpm:fuente
En mi caso, necesitaba un
proxy_ajp
módulo.fuente
Esto me estaba sucediendo en mi configuración de Apache / 2.4.18 (Ubuntu). En mi caso, el error que estaba viendo fue:
La configuración relacionada con esto fue:
"
No protocol handler was valid for the URL /~socket.io/
" significaba que Apache no podía manejar la solicitud enviada a "ws://127.0.0.1:8090/~socket.io/
"Lo había
proxy_http
cargado, pero también lo necesitabaproxy_wstunnel
. Una vez que se habilitó, todo estuvo bien.fuente
Para aclarar para futuras referencias, a2enmod, como se sugiere en varias respuestas anteriores, es para Debian / Ubuntu. Red Hat no usa esto para habilitar los módulos de Apache; en su lugar, usa declaraciones LoadModule en httpd.conf.
Más aquí: /server/56394/how-do-i-enable-apache-modules-from-the-command-line-in-redhat
La resolución / respuesta correcta está en los comentarios sobre el OP:
Creo que necesitas mod_ssl y SSLProxyEngine con ProxyPass - Deadooshka 29 de mayo de 2014 a las 11:35
@Deadooshka Sí, esto está funcionando. Si publica esto como respuesta, puedo aceptarlo - das_j 29 de mayo de 2014 a las 12:04
fuente
Estoy publicando una respuesta aquí, ya que tuve el mismo mensaje de error por una razón diferente.
Este mensaje de error puede aparecer, por ejemplo, si está usando apache httpd para proxy de una fuente en el protocolo A para apuntar en el protocolo B.
Aquí está el ejemplo de mi situación:
En el caso anterior, lo que estaba sucediendo era simplemente lo siguiente. Había habilitado las solicitudes de proxy proxy para proxy websocket a nodejs según la ruta / sockjs-node.
El problema es que el nodo no usa la ruta / sockjs-node para las solicitudes websocket exclusivamente. También utiliza esta ruta para alojar puntos de entrada REST que entregan información sobre websockets.
De esta manera, cuando la aplicación intente abrir http: // localhost: 7001 / sockjs-node / info , apache httpd intentará enrutar la llamada de descanso del protocolo HTTP a una llamada de punto final de Webscoket. Node no aceptó esto.
Esto condujo a la excepción anterior.
Tenga en cuenta que incluso si habilita los módulos correctos, si intenta hacer un reenvío incorrecto, esto terminará con apache httpd que le informa que el protocolo que intentó usar en el servidor de destino no es válido.
fuente
Traté de ponerme a
uwsgi://
trabajar, pero de alguna manera el manual pensó que estaba claro para mí que realmente necesitabamod_proxy_uwsgi
. No era. Así es como lo haces: ¿Cómo compilar mod_proxy_uwsgi o mod_uwsgi?fuente
Para mí, todas las respuestas mencionadas anteriormente estaban habilitadas en xampp que aún no funcionaban. La habilitación del módulo a continuación hizo que el host virtual volviera a funcionar
fuente