/ / Proxying podkatalogu przy użyciu Lighttpd mod_proxy - lighttpd, mod-proxy

Proxying podfolderu przy użyciu Lighttpd mod_proxy - lighttpd, mod-proxy

Mam problemy z uzyskaniem poprawnego mod_proxyprzekierować ruch do innego serwera WWW działającego na tym samym komputerze dla predefiniowanego podfolderu. Idealnie domena.com/docs powinna przesyłać do 127.0.0.1:3000, a cały pozostały ruch powinien pozostać na domenie domain.com. Reguły przepisywania tutaj dotyczą instalacji wordpress działającej na domenie 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"
}
}

Od pewnego czasu biłem się przeciwko temu, więc wszelkie sugestie są mile widziane.

Odpowiedzi:

2 dla odpowiedzi № 1

W końcu zorientowałem się, że problem, który powodował to, nie działa tak, jak się spodziewałem.

Sposób, w jaki działa mod przepisywania lighttpd, oceniawszystkie polecenia url.rewrite, zanim oszacuje je jako "$ HTTP [" url "] warunkowe, co oznacza, że ​​wszelkie polecenia url.rewrite umieszczone w warunku $ HTTP [" url "] nie będą miały żadnego wpływu.

Nie byłem w stanie znaleźć dobrego rozwiązaniaimplementacja, której szukałem z tym ograniczeniem, i zamiast tego w końcu przepchnęło część przepisywania w dół do drugiego serwera (węzła w tym przypadku), do którego byłem proxy dla ruchu.

Jest to luźno określane w lighttpd ModRewrite dokumenty z tą linią:

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