2014-02-10 93 views
1

我使用lighttpd作爲當前版本2.1.1上的一組Play實例的反向代理。 Play應用程序使用分塊傳輸編碼來執行COMet(服務器推送)。 Lighttpd版本是1.4.28(Ubuntu 12.04的最新支持版本)。Lighttpd反向代理將HTTP/1.1請求轉換爲1.0

此設置運行良好,但現在我升級到Play Framework 2.2.1。該框架現在強制分塊響應必須響應HTTP/1.0請求(請參閱https://github.com/playframework/playframework/commit/5131c46626b82f966a9b7894cf9bfcdc1b464f3e),結果證明我的lighttpd代理正在將HTTP/1.1請求轉換爲HTTP/1.0。 Play的確切響應是505,並帶有消息「The response to this request is chunked and hence requires HTTP 1.1 to be sent, but this is a HTTP 1.0 request.」。

那麼下一步呢?我不知道我的替代方案(獲取最新版本的lighttpd,切換到nginx)很可能會起作用。

更新:lighttpd看起來不太有希望,因爲mod_proxy.c具有HTTP/1.0硬編碼,即使它處理分塊編碼。

回答

5

我解決了這個問題,用Nginx替換Lighttpd作爲我的反向代理。下面是精確的Nginx配置節,它將在server部分內:

location/{ 
    proxy_http_version 1.1;  
    proxy_pass http://127.0.0.1:8080; 
}