Rewrite URL before passing to proxy Lighttpd

Solution 1:

url rewrites won't work in $HTTP["url"]. However, you should be able to rewrite it globally in this manner:

url.rewrite-once = ( "^/wsmobile/video/(.*)" => "/test/" )

and then catch it with:

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

   # do proxy here

}

UPDATE:

Please see here: Lighttpd bug #164. Specifically, proxy-core.rewrite-request should be what you're looking for.

Solution 2:

This can be done with proxy.header since lighttpd v 1.4.46. See:

https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModProxy

Example for above would be:

$HTTP["url"] =~ "^/wsmobile/video/" {
proxy.header = ("map-urlpath" => ( "/wsmobile/video" => "/" ))
proxy.server = ( "" => ( ( "host" =>  "210.200.144.26", "port" => 9091 ) ) )
}

One thing I have found though is if you post something on the proxied server (say http://210.200.144.26:9091/post-a-link"), that doesn't get translated properly back to the proxy as it throws a 404 because it's looking for a http://$PROXY/post-a-link not on the server with port 9091.