2012-02-19 145 views
5

我想配置Lighttpd作为反向代理。我想要有几个URL代理不同端口上的不同服务器,无论是在同一台机器上还是在本地网络中。Lighttpd反向代理设置

例如:

/ /静态 /插座 /AJAX

Lighttpd的代理将所有除那些/static的连接。我想直接从lighttpd的这个实例向/static提供所有请求。

这里是mod_proxy的配置文件:

## 
# Serve Static Content via Lighttpd. 
# 
$HTTP["url"] =~ "^/static/" { 
    server.document-root = "/path/to/my/static/files" 
    accesslog.filename = rootdir + "/var/log/static.log" 
    server.errorlog = rootdir + "/var/log/static.error.log" 
} 
## 
# Proxy to instance of Socket.io. 
# 
else $HTTP["url"] =~ "^/socket/" { 
    accesslog.filename = rootdir + "/var/log/socket.log" 
    server.errorlog = rootdir + "/var/log/socket.error.log" 
    proxy.server = (
     "" => ((
      "host" => "127.0.0.1", 
      "port" => 3000 
     )) 
    ) 
} 
## 
# Proxy to AJAX backend. 
# 
else $HTTP["url"] =~ "^/ajax/" { 
    accesslog.filename = rootdir + "/var/log/ajax.log" 
    server.errorlog = rootdir + "/var/log/ajax.error.log" 
    proxy.server = (
     "" => ((
      "host" => "127.0.0.1", 
      "port" => 4000 
     )) 
    ) 
} 
## 
# Proxy to something that returns my layout. 
# 
else $HTTP["url"] =~ "^/" { 
    accesslog.filename = rootdir + "/var/log/root.log" 
    server.errorlog = rootdir + "/var/log/root.error.log" 
    proxy.server = (
     "" => ((
      "host" => "127.0.0.1", 
      "port" => 5000 
      )) 
    ) 
} 

我敢肯定,我的正则表达式是错误的。我也认为else串接是错误的。我只是不知道该怎么做。我对这个领域很陌生,所以我希望能够在正确的方向上进行一些推动。

谢谢,

回答

2

严格地说,其他块应该是不必要的。

至于你的实际问题,你在你的问题陈述你想匹配/ajax,但你的正则表达式寻找/ajax/(注意尾部斜线)。您要求的网址是什么?

+0

至少在我的情况下,使用反向代理的要点是规避相同的原产地策略。因此,我的使用案例将发布数据,并没有真正关心任何超过最初/ ajax的内容。这是一个例外/静态。我需要完整保留请求才能提供正确的静态内容。 – Jonathan 2012-02-19 22:57:28

+0

通过网址,你的意思是域名?我只想让lighttpd基于url进行匹配,而不管域名是什么。我误解了吗? – Jonathan 2012-02-19 23:02:54

+0

不,我只是指路径部分(在域之后)。我只是指出了这个答案的尾部斜线:) – 2012-02-20 00:49:52