6

我需要在 lighttpd 上设置代理/重写!

我有 server1,它通过 http 2 个不同的网络应用程序路径提供服务:

* http://server1/path1
* http://server1/path2

另外,我在 server1 前面有 lighttpd 服务器

我想在 lighttpd 上设置重写和/或代理,以便 2 个路径中的每一个都将作为不同域上的根路径:

* requests to http://server2.com/* are proxied/rewrited to http://server1/path1/*
* requests to http://server3.com/* are proxied/rewrited to http://server1/path2/*

重要的:

  • server2.com 和 server3.com只能通过 http访问 server1
  • 重定向不是选项,server2.com 和 server3.com 的用户不应该不知道实际的 Web 应用程序是从 server1 的不同路径提供的。

可能吗?

4

1 回答 1

5

lighttpd 开发人员几年前就知道您的需求。

根据版本,解决方法或新功能会回答它。

轻量级 1.4

bugtracker 中解释了一种解决方法:bug #164

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

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

轻量级 1.5

他们用这个命令(官方文档)添加了这个特性:

proxy-core.rewrite-request:重写请求标头或请求 uri。

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

  proxy-core.rewrite-request = (
    "_uri" => ( "^/path1/?(.*)" => "/$1" ),
    "Host" => ( ".*" => "server2.com" ),
  )
}
于 2013-10-19T13:39:18.167 回答