Configuration
在傳遞給代理 Lighttpd 之前重寫 URL
我正在嘗試在 lighttpd 中設置反向代理,以便 /mobile/video 下的所有請求(並且只有那些請求)被重定向到輔助 Web 伺服器的 / 目錄。這在 apache 中很容易,但我一生都無法弄清楚如何在 lighttpd 中這樣做。
$HTTP["url"] =~ "^/wsmobile/video/" { url.rewrite-once = ( "^/wsmobile/video/(.+)" => "/$1" ) proxy.server = ( "" => ( ( "host" => "210.200.144.26", "port" => 9091 ) ) ) }
我試過使用http
$$ “url” $$指令,但 lighttpd 只是忽略這些請求並繼續將完整的 url 傳遞給輔助伺服器,這當然會阻塞並拋出 404。但是,如果我進行全域重寫,那麼所有內容都會被轉發到輔助伺服器,這也不是我想要的。 我該如何完成這項任務?
url重寫在.
$HTTP["url"]
但是,您應該能夠以這種方式全域重寫它:url.rewrite-once = ( "^/wsmobile/video/(.*)" => "/test/" )
然後抓住它:
$HTTP["url"] =~ "^/test/" { # do proxy here }
更新:
請參閱此處:Lighttpd 錯誤 #164。具體來說,proxy-core.rewrite-request應該是您正在尋找的。
這可以
proxy.header
從 lighttpd v 1.4.46 開始。看:https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModProxy
上面的例子是:
$HTTP["url"] =~ "^/wsmobile/video/" { proxy.header = ("map-urlpath" => ( "/wsmobile/video" => "/" )) proxy.server = ( "" => ( ( "host" => "210.200.144.26", "port" => 9091 ) ) ) }
我發現的一件事是,如果您在代理伺服器上發布某些內容(例如http://210.200.144.26:9091/post-a-link),則不會正確翻譯回代理,因為它會拋出一個404,因為它正在尋找不在埠 9091 的伺服器上的 http://$PROXY/post-a-link。