<-
Apache > Servidor HTTP > Documentación > Versión 2.5 > Rewrite

Uso de mod_rewrite para Proxy

Idiomas disponibles:  de  |  en  |  es  |  fr  |  ja  |  ko  |  tr  |  zh-cn 

Este documento complementa la mod_rewrite documentación de referencia. Describe cómo usar la bandera [P] de RewriteRule para hacer proxy de contenido a otro servidor. Se proporcionan varias recetas que describen escenarios comunes.

Consulte también

top

Hacer proxy de contenido con mod_rewrite

Descripción:

mod_rewrite proporciona la bandera [P], que permite pasar URLs, a través de mod_proxy, a otro servidor. Aquí se dan dos ejemplos. En un ejemplo, una URL se pasa directamente a otro servidor, y se sirve como si fuera una URL local. En el otro ejemplo, hacemos proxy del contenido faltante a un servidor backend.

Solución:

Para simplemente mapear una URL a otro servidor, usamos la bandera [P], de la siguiente manera:

RewriteEngine  on
RewriteBase    "/products/"
RewriteRule    "^widget/(.*)$"  "http://product.example.com/widget/$1"  [P]
ProxyPassReverse "/products/widget/" "http://product.example.com/widget/"

En el segundo ejemplo, hacemos proxy de la solicitud solo si no podemos encontrar el recurso localmente. Esto puede ser muy útil cuando está migrando de un servidor a otro, y no está seguro de si todo el contenido ha sido migrado todavía.

RewriteCond "%{REQUEST_FILENAME}"       !-f
RewriteCond "%{REQUEST_FILENAME}"       !-d
RewriteRule "^/(.*)"                    "http://old.example.com/$1" [P]
ProxyPassReverse "/" "http://old.example.com/"
Discusión:

En cada caso, añadimos una directiva ProxyPassReverse para asegurar que cualquier redirección emitida por el backend se pase correctamente al cliente.

Considere usar ProxyPass o ProxyPassMatch siempre que sea posible en preferencia a mod_rewrite.

Idiomas disponibles:  de  |  en  |  es  |  fr  |  ja  |  ko  |  tr  |  zh-cn