Configuración de Apache mod_proxy para el desarrollo web local

Estoy buscando una manera de implementar una estrategia de proxy para el desarrollo web local que se integra a otras aplicaciones y services. La aplicación que bash desarrollar se integra con varias otras aplicaciones en el mismo sitio (por ejemplo, https://example.com/myapp /login , /app2 ).

Desafíos

Éstos son algunos de los desafíos:

  • Es muy difícil enfrentarse a las otras aplicaciones en un context local debido a sus dependencies / sistemas propietarios. Es más fácil apuntar integraciones en entornos implementados reales (por ejemplo, etapa).

  • Las integraciones de salida pueden configurarse, pero las integraciones entrantes se rompen. Por ejemplo, si un usuario no se registra en local/myapp , entonces networkingireccionamos a stage/login (otra aplicación en la integración de destino) que registra un usuario y networkingirige a stage/myapp , pero en el dominio incorrecto. Además, la cookie de inicio de session se escribe en el context de dominio incorrecto (etapa, no local).

  • El layout de la fase / inicio de session para que pueda volver a ubicaciones arbitrarias utilizando un parámetro de retorno, como url = local / myapp es un riesgo de security.

  • SSL es proporcionado por otra capa, lo que significa que el desarrollo local no está configurado para SSL, pero la integración local a etapa requeriría cambiar los contexts: http://local/myapp -> https://stage/login -> http://local/myapp .

EXPERIMENTOS

Mi copy de desarrollo local se ejecuta en http://myworkstation.dhcp.example.com:3000/myapp .

Lo que me gustaría es la posibilidad de configurar un proxy tal que el tráfico va a:

  • https://example.com/myapp/* -> http://myworkstation.dhcp.example.com:3000/myapp/*
  • todo lo demás va a la url solicitada originalmente https://example.com/* -> https://example.com/*

El efecto que me gustaría lograr es como la function remota del map de Charles Proxy, que permite a un sitio servido localmente "superponer" un sitio remoto.

He leído sobre varios modules de Apache mod_proxy, mod_rewrite y, básicamente, desea un proxy de reenvío para todo, excepto un subdirectory elegido (tal vez reescribir? Tal vez inversa proxy?). También he mirado a Squid.

He intentado varias combinaciones, pero me falta el enfoque general para hacer esto. ¿Es algo así posible utilizando Apache mod_proxy y / o mod_rewrite?

Para algún context, aquí está mi bash hasta ahora, pero sólo puedo conseguir que el proxy directo funcione. Estoy usando Firefox y estableciendo el proxy para todos los protocolos a myworkstation.dhcp.example.com:8118

 Listen 8118 <VirtualHost *:8118> # Enable forward proxy ProxyRequests On # Add "Via" header ProxyVia On <Proxy *> Order deny,allow Deny from all Allow from example.com # local devs only! </Proxy> # local Rails app, eg $ rails s -e stage # local request: http://myworkstation.dhcp.example.com:3000/myapp # normal stage requests: https://stage.example.com/myapp # app logs in via another app: https://stage.example.com/login # which I want to delegate to without standing up another local app. # which to use? hmmm... #ProxyRemote "https://stage.example.com/myapp/" "http://myworkstation.dhcp.example.com:3000/myapp/" #ProxyPass /myapp http://myworkstation.dhcp.example.com:3000/myapp #ProxyPassReverse /myapp/ http://myworkstation.dhcp.example.com:3000/myapp/ #RewriteEngine on #RewriteBase "/myapp/" #RewriteRule "^/myapp/(.*)$" "http://myworkstation.dhcp.example.com:3000/myapp/$1" [P] #ProxyPassReverse "/myapp/" "http://myworkstation.dhcp.example.com:3000/myapp/" # another approach, maybe via Passenger? ServerName integration-proxy ErrorLog "/var/log/apache2/integration-proxy-error.log" </VirtualHost>