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 № 1W 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.