lighttpd as reverse-proxy

房东的猫 提交于 2019-11-30 00:26:45

Your need is known by lighttpd developers from several years.

It is answered by a workaround or new feature depending on the version.

Lighttpd 1.4

A workaround is explained in the bugtracker : bug #164

$HTTP["url"] =~ "(^/DeviceB/)" {   
  proxy.server  = ( "" => ("" => ( "host" => "127.0.0.1", "port" => 81 ))) 
}

$SERVER["socket"] == ":81" {   
  url.rewrite-once = ( "^/DeviceB/(.*)$" => "/$1" )   
  proxy.server  = ( "" => ( "" => ( "host" => "192.168.1.20", "port" => 80 ))) 
}

Lighttpd 1.5

They added this feature with this command (official documentation) :

proxy-core.rewrite-request : rewrite request headers or request uri.

$HTTP["url"] =~ "^/DeviceB" {
  proxy-co...

  proxy-core.rewrite-request = (
    "_uri" => ( "^/DeviceB/?(.*)" => "/$1" ),
    "Host" => ( ".*" => "192.168.1.20" ),
  )
}
PicoCreator

Required package

server.modules  =  (
...
   "mod_proxy",
...
)

Your frontend proxy setting : for lighttpd.conf @192.168.1.10

$HTTP["url"] =~ "^.*DeviceB" {
    proxy.server  = ( "" => 
        (( "host" => "192.168.1.20", "port" => 80 ))
    )
}

$HTTP["url"] =~ "^.*DeviceC" {
    proxy.server  = ( "" => 
        (( "host" => "192.168.1.30", "port" => 80 ))
    )
}

For the full documentation of lighttpd mod_proxy, you can refer to http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ModProxy

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!