2012-09-18 19 views
4

我有問題讓mod_proxy正確地將流量轉發到在同一臺計算機上運行的預定義子文件夾的其他web服務器。理想情況下,domain.com/docs應該轉發到127.0.0.1:3000,所有其他流量應停留在domain.com上。這裏的重寫規則是一個WordPress安裝在domain.com運行:使用Lighttpd代理子文件夾mod_proxy

$HTTP["host"] =~ "(^|\.)domain\.com" { 
$HTTP["url"] =~ "^/docs" { 
    proxy.server = ("" => (("host" => "127.0.0.1", "port" => 3000))) 
} 
$HTTP["url"] !~ "^/docs/(.*)" { 
    url.rewrite = (
    "^/(.*)\.(.+)$" => "$0", 
    "^/wp/(.*)$" => "$0", 
    "^/(.+)/?$" => "/index.php/$1" 
) 
    server.document-root = "/mnt/webroot/html" 
} 
} 

我一直在打我的頭這一段時間了,所以任何建議,歡迎。

回答

2

我最終找出了導致此問題無法正常工作的問題。

lighttpd的重寫模塊的工作方式是在評估它的$ HTTP [「url」]條件之前評估所有url.rewrite命令,這意味着放置在$ HTTP [「url」]條件中的任何url.rewrite命令將不起作用。

我無法找到一個很好的解決方案,我正在尋找這個限制的實現,而是最終推動一些下游重寫到其他服務器(在這種情況下是節點),我代理交通。

這被籠統地稱爲中的lighttpd的ModRewrite文檔這一行:

NOTE: url rewriting does not work within a $HTTP["url"] conditional. 
相關問題