HTTPS za load balancerem způsobuje smyčku při kanonizaci url

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
CZechBoY
Člen | 3608
+
0
-

Zdravím,
už jsem identifikoval problém s neustálým přesměrováváním na stejnou adresu a teď bych to potřeboval nějak čistě vyřešit :-).
Jde o to, že při https požadavak k load balanceru a load balancer pošle http (s http_x_forwarded_proto=https) na webserver. Nette si ale myslí, že se jedná o http požadavek a tak zkanonizuje url na https protokol, přesměruje 301… a takhle furt dokola.
V RouterFactory mám nastaveno generování https pomocí Route::$defaultFlags = Route::SECURED.
Napadá vás nějaké čisté řešení nebo budu muset hacknout Http\Url::isEqual a udělat si výjimku na protokol?

Díky za rady.

Jan Mikeš
Člen | 771
+
0
-

Zoufalý pokus, ale kdo ví, třeba pomůže :D máš v routeru $defaultFlags obaleny podmínkou takto?

// $httpRequest = Nette\Http\Request injectnuto přes __construct
if ($this->httpRequest->isSecured()) {
	Route::$defaultFlags = Route::SECURED;
}

Editoval Lexi (6. 9. 2016 19:29)

CZechBoY
Člen | 3608
+
0
-

@Lexi ne, mám tam jen kontrolu jestli jsem na localhostu (:D, nepodařilo se mi rozjet https na localu).
Chci mít https vždy, jen přes ten load balancer mi přijde požadavek přes http (ale já musim generovat https adresy, protože tam je zase přijímá load balancer).

jiri.pudil
Nette Blogger | 1028
+
0
-

Jaké všechny hlavičky ten load balancer pošle v requestu? RequestFactory v nette/http:>=2.4 je už docela chytrá a s X-Forwarded-Proto by si měla poradit

edit: ha, a koukám, že o tři řádky výš je asi bug :)

Editoval jiri.pudil (6. 9. 2016 20:36)

CZechBoY
Člen | 3608
+
0
-

@jiri.pudil jedu zatím na Nette 2.3, ale asi bych si mohl zkopírovat tu třídu Http\RequestFactory, protože to vrací to stejné jako v 2.3, nebo ne?