1 votos

Cómo solicitudes de proxy a un localhost ruta a un no-local de la dirección url

Estoy configurando un entorno local para el análisis usando WAMP.

La aplicación (angular de la aplicación) se encuentra en el /wamp/www/app/ directorio. Se realiza peticiones a otro de la api mediante el envío de peticiones a otro de la ruta en su mismo servidor. (Específicamente a /wamp/www/api/ruta)

Tenemos un dev de servidor de la api que existe en http://api.com. Tenemos otra prueba de la instancia de la angulares de la aplicación en http://testapp.com/app/ que puede enviar solicitudes a http://api.com señalando a http://testapp.com/api/route.

La forma en que esto funciona en la instancia de prueba (no local) es que tenemos una .htaccess en http://testapp.com/api/route que toma los pedidos a http://testapp.com/api/route/* y los envía a http://api.com/*

El .htaccess que hace esto es la siguiente:

<IfModule mod_rewrite.c>
    RewriteRule (.*) http://api.com/$1 [NC,P]
</IfModule>

Cuando puedo copiar este .archivo htaccess para mi /wamp/www/api/ruta/ directorio espero que el siguiente comportamiento:

Lo que quiero

La aplicación va a enviar una solicitud a /wamp/www/api/ruta/cosas/ y el .htaccess en /ruta/ toma de la solicitud, y proxies a http://api.com/stuff

Lo que me pasa

La aplicación va a enviar una solicitud a /wamp/www/api/ruta/stuff/, y obtener un 404 de la espalda.

Me he asegurado de que AllowOverride all se establece, que el motor de reescritura y que los mod-rewrite está habilitado. Sé el .htaccess que se ve, porque si yo ponga la basura en él, tengo una 500 en lugar de la 404, y mi basura se mete en el registro.

Cualquier ayuda sería muy apreciada! Gracias.


Después de la ayuda de Purefan, que se permitió la reescritura de registro, y desde que permitan, no han sido los intentos de reescribir, lo que podría sugerir que la regla de reescritura es que no siempre se ejecuta en las solicitudes.

Ahora he intentado cambiar el flujo de cómo yo llamo la regla de reescritura.

He creado un directorio en el archivo de configuración httpd, de la siguiente manera:

<Directory "c:/wamp64/www/api/route">
    Options  +FollowSymLinks
    RewriteEngine on
    <IfModule mod_rewrite.c>
        RewriteRule (.*) http://api.com/$1 [NC,P]
    </IfModule>
</Directory>

Y sigo teniendo el mismo comportamiento

1voto

Xgongiveittoya Puntos 128

Gracias a Purefan, con la reescritura de registro habilitado, vi que la reescritura estaba tratando de volver a escribir, pero, a continuación, la solicitud nunca fue enviado.

Cuando me quité la P flag de la RewriteRule, sería reescribir la solicitud, pero luego mi encabezados no se han agregado, porque no estábamos de proxy, que tengo que hacer.

Esto luego me llevó a darme cuenta de que el proxy no estaba funcionando correctamente, lo que inmediatamente vamos a esta solución:

En el httpd.conf archivo, cambiar

#LoadModule proxy_module modules/mod_proxy.so

a

LoadModule proxy_module modules/mod_proxy.so

TL;DR

Habilitar mod_proxy si desea proxy con el P de la flag en una re-escritura de la regla

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: