2012-02-19 144 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