¿Cómo reescribir / proxy un URI de Apache a una aplicación que escucha en un puerto / servidor específico?

Dicen que el mod_rewrite de Apache es la navaja suiza de la manipulación de URL, pero ¿puede hacer esto?

Digamos que quiero agregar una nueva aplicación a mi servidor web Apache, donde la única opción configurable de la aplicación es un número de puerto.

Quiero usar y dar URL del formulario "http: //hostname.example.com/ap" más bien que "http: //hostname.example.com: 8080 ". Esto aseguraría que los clientes también atravesarían el firewall de la institución, y generalmente es más ordenado.

Mi aplicación incluye URI absolutos en php, javascript y css, por lo que quiero anteponer mi propia ubicación raíz al URI en los enlaces internos de las aplicaciones. No tengo acceso a los registros DNS y, por lo tanto, no puedo crear otro servidor virtual basado en nombres.

Utilizando los módulos mod_rewrite y mod_proxy de Apache, puedo redirigir transparentemente un cliente a la página de inicio correcta de la aplicación. Pero los enlaces dentro de esa página de inicio no apuntan a un cliente a enlaces relativos a la nueva URL base.

Entonces, ¿cuál es la mejor manera de enviar una solicitud a una aplicación que está escuchando en un puerto específico?

Por ejemplo, si tuviera una aplicación escuchando en el puerto 8080, podría poner esto en mi configuración de Apache: -

<VirtualHost *:80>
    SSLProxyEngine On
    ServerName myhost.example.com
    RewriteEngine On
    UseCanonicalName On
    ProxyVia On
    <Location "/application">
        RewriteRule ^/application/?(.*) http://localhost:8080/$1 [P,L]
    </Location>
</VirtualHost>

Esto funcionaría bien si la aplicación no usara URL absolutas, pero lo hace. Lo que tengo que hacer es reescribir las URL que devuelven css, javascript y php de la aplicación.

He visto la documentación de ProxyPass y ReverseProxyPass, pero no creo que funcionen ...

También me encontré con Nick Kew's mod_proxy_html, pero esto no está incluido en la distribución estándar de Apache, y el servidor web de mi institución parece haber estado bien durante años sin él. Aparte de rastrear manualmente (o usar una expresión de tipo grep -r | sed) a través del código fuente de la aplicación , o usando este complemento de terceros, ¿hay alguna otra forma de hacerlo?

¿Podría usar algunas de las variables internas del servidor en una regla mod_rewrite? Por ejemplo, una regla de reescritura basada en 'HTTP_REFERER'?

Respuestas a la pregunta(1)

Su respuesta a la pregunta