在传递给代理 Lighttpd 之前重写 URL

fut*_*te7 5 rewrite url configuration mod-proxy lighttpd

我正在尝试在 lighttpd 中设置一个反向代理,以便 /mobile/video 下的所有请求(并且只有那些请求)被重定向到辅助 Web 服务器的 / 目录。这在 apache 中很容易,但我一生都无法弄清楚如何在 lighttpd 中做到这一点。

$HTTP["url"] =~ "^/wsmobile/video/" {
       url.rewrite-once = ( "^/wsmobile/video/(.+)" => "/$1" )
       proxy.server = ( "" => ( ( "host" =>  "210.200.144.26", "port" => 9091 ) ) )
}
Run Code Online (Sandbox Code Playgroud)

我试过使用 http["url"] 指令,但是 lighttpd 只是忽略这些请求并继续将完整的 url 传递给辅助服务器,这当然会导致 404 阻塞和抛出。但是,如果我进行全局重写,那么所有内容都会转发到辅助服务器,这也不是我想要的。

我该如何完成这项任务?

Kar*_*zak 3

url重写. $HTTP["url"]但是,您应该能够以这种方式全局重写它:

url.rewrite-once = ( "^/wsmobile/video/(.*)" => "/test/" )
Run Code Online (Sandbox Code Playgroud)

然后用以下命令捕获它:

$HTTP["url"] =~ "^/test/" {

   # do proxy here

}
Run Code Online (Sandbox Code Playgroud)

更新:

请参阅此处:Lighttpd bug #164。具体来说,proxy-core.rewrite-request应该是您正在寻找的。