2013-06-12 31 views
1

我一直在研究Laravel 4站點一段時間,公司只是將它放在負載均衡器後面。現在,當我嘗試登錄時,基本上只刷新頁面。我嘗試了使用floloper的代理軟件包https://github.com/fideloper/proxy,但看不到變化。我甚至打開它來允許所有IP地址通過代理=>'*'。我需要一些幫助,瞭解需要做些什麼才能讓Laravel在負載均衡器後面工作,特別是在會話時。請注意,我正在使用數據庫Laravel會話驅動程序。在負載平衡器後面使用Laravel

負載平衡器是KEMP LM-3600。

+0

哪個負載均衡器?有很多 – 2013-06-12 20:17:34

+0

我正在與網絡人員檢查,並會盡快更新,只要我知道。 – thestepafter

+0

他們有一個KEMP LM-3600。 – thestepafter

回答

2

感謝大家提供的有用信息。經過進一步測試後,我發現這不起作用的原因是因爲我們強制https通過負載平衡器,但在不通過負載平衡器時允許http。登錄表單實際上發佈到http而不是https。這允許表單發佈,但會話數據從未將其返回給客戶端。更改表單以發佈到https解決了此問題。

+0

我不知道這是否是Laravel 4.1的更新版本,但現在應該設置Trusted Proxies。 Laravel應該正確地創建重定向和URL。該表單是否將URL硬編碼爲「http」?我測試了負載平衡代理後面的laravel 4.1,並且它在可信代理正確設置*時正常運行。 – fideloper

0

我們使用一個負載平衡器,在那裏工作,我遇到了類似的訪問cPanel儀表板的問題,在每次嘗試訪問某個部分時都會重新加載頁面,並在我的IP地址更改爲他們時將其註銷。解決方案是查找cPanel使用的端口並將負載均衡器配置爲將該端口綁定到一個WAN。對不起,我不熟悉laravel,如果它只是使用端口80,那麼這可能不是一個解決方案。

+0

我們使用https,所以負載平衡器正在接受443上的連接。您是如何找出cPanel使用哪個端口的? – thestepafter

+0

@達利安http://en.wikipedia.org/wiki/CPanel「cPanel通常在2082端口上訪問」 – amaster

+0

@達利安我沒有看過KEMP LM-3600,但我知道用我們可以綁定設備內部網絡上的MAC地址。如果您的站點是您服務器上唯一的一個站點,並且它與平衡器不在同一子網上,那麼您可能會要求「網絡人員」將您的服務器綁定到一個WAN並像平常一樣工作。 – amaster

0

注意,會議Laravel 4處理使用中不使用提供會話保存處理程序,如「文件」,「分佈式緩存」等PHP所有自編碼處理Symfony 2 code, which lacks proper session locking

這將創建一個錯誤使用時在具有Ajax等並行請求的Web應用程序中,但這應該與任何負載平衡器無關。

你真的應該做更多的調查。 HTTP負載平衡器確實對信息流有一定的影響,但是對PHP應用程序的唯一影響是,單個用戶瀏覽網站會將請求隨機發送到任何一臺連接的服務器,而不總是相同。

您是否也使用任何奇特的數據庫設置,如主從複製?如果只在主設備上完成寫操作,則只會在從設備上完成讀操作,並且該從設備在主設備之後更新最後的寫操作,這會影響會話的可能性更大。這種配置不建議作爲會話存儲。我寧願使用Memcached。 PHP會話保存處理程序確實實現了正確的鎖定...

使用floloper的代理沒有任何意義。負載均衡器對Web服務器應該是透明的,即它不應該充當反向代理,除非被配置爲這樣做。

+0

我已將Laravel 4會話驅動程序切換回原生。你是否說過,除非我使用本機會話驅動程序,否則AJAX請求將成爲問題?我們看到的問題是當我點擊登錄時,它基本上只是發佈到頁面。我甚至沒有收到錯誤,說我沒有填寫登錄字段。當網站沒有通過負載均衡器時,該網站可以正常工作。我們還會在瀏覽器中每隔1-10頁加載一次連接中斷消息。數據庫沒有什麼特別之處。 Windows Server 2008運行IIS和SQL Server,並配置PHP並使用IIS運行。 – thestepafter

+0

那麼,基於本機文件的會話將不會在負載平衡的環境中工作,除非基於會話cookie使負載平衡器變得粘滯。如果會話在機器之間切換,則具有會話數據的文件不會。 – Sven

0

使用共享資源來存儲會話數據。文件和memcached肯定無法工作。數據庫應該可以。這就是我在使用通用數據庫的負載平衡設置上使用的。

+0

您是否必須在負載平衡器上執行任何其他配置才能使其正常工作?您是否使用Laravel進行安裝? – thestepafter

+1

是的,使用Laravel。兩個網頁頭都訪問一個共同的數據庫,這是會話數據存儲的地方。唯一重要的配置點是使用數據庫會話驅動程序。 –

0

我一直在使用TrustedProxy一段時間,它的工作正常。

負載平衡器的主要問題是代理路由。接下來是從自述文件和它正在尋找的內容。

如果您的網站位於負載平衡器,網關緩存或其他 「反向代理」的背後,每個Web請求有出現 總是來自該代理,而不是客戶端實際上是在做 請求潛力您的網站。

爲了解決這個問題,該軟件包允許您利用Symfony的代理知識 。請參閱下面的關於 「可信代理」主題的更多說明。