/ / Proxying una subcarpeta usando Lighttpd mod_proxy - lighttpd, mod-proxy

Proxying una subcarpeta usando Lighttpd mod_proxy - lighttpd, mod-proxy

Tengo problemas para que mod_proxy funcione correctamentereenvíe el tráfico a un servidor web diferente que se ejecuta en la misma máquina para una subcarpeta predefinida. Idealmente, domain.com/docs debe reenviarse a 127.0.0.1:3000 y el resto del tráfico debe permanecer en domain.com. Las reglas de reescritura aquí son para una instalación de wordpress que se ejecuta en domain.com:

$HTTP["host"] =~ "(^|.)domain.com" {
$HTTP["url"] =~ "^/docs" {
proxy.server  = ( "" => (( "host" => "127.0.0.1", "port" => 3000 )))
}
$HTTP["url"] !~ "^/docs/(.*)" {
url.rewrite = (
"^/(.*).(.+)$" => "$0",
"^/wp/(.*)$" => "$0",
"^/(.+)/?$" => "/index.php/$1"
)
server.document-root = "/mnt/webroot/html"
}
}

He estado golpeando mi cabeza contra esto por un tiempo, así que cualquier sugerencia es bienvenida.

Respuestas

2 para la respuesta № 1

Finalmente descubrí el problema que estaba causando que esto no funcionara como esperaba.

La forma en que el mod de reescritura de lighttpd funciona, evalúatodos los comandos url.rewrite antes de que evalúe sus condicionales "s $ HTTP [" url "], lo que significa que cualquier comando url.rewrite colocado dentro de un condicional $ HTTP [" url "] no tendrá ningún efecto.

No pude encontrar una buena solución para elimplementación que estaba buscando con esta limitación, y en lugar de eso, terminé enviando parte de la reescritura en sentido descendente al otro servidor (nodo en este caso) al que estaba dirigiendo el tráfico.

Esto se menciona libremente en lighttpd "s ModRewrite docs con esta linea:

NOTE: url rewriting does not work within a $HTTP["url"] conditional.