2011-12-14 19 views
6

Sto distribuendo un'app su Heroku e cercando di determinare se la richiesta in arrivo è sicura (request.secure). Inizialmente restituisce false su heroku perché nginx gestisce il lavoro SSL e comunica su un semplice http sul server dell'app. Quindi, per lasciare che il gioco leggere le intestazioni che lasciano è so che è una richiesta sicura aggiungo:XForwardedSupport per il gioco https! supporto su Heroku in mancanza

XForwardedSupport = 127.0.0.1

Per application.conf come raccomandato nelle bacheche gioco. Tuttavia, tutte le richieste (eccetto le immagini) falliscono senza errori. Sembra che succeda qualcosa di fondamentale prima di raggiungere i log di gioco. Qualcuno ha provato questo?

+0

Suppongo che il problema è perché il modo Heroku gestisce il routing. Crea un ticket di supporto, sono molto veloci nel rispondere e sono davvero felice di come risolvono i problemi. –

+0

Lo farò, posterò di nuovo qui con qualsiasi risoluzione. –

risposta

6

Non credo che Play supporti il ​​modo in cui le richieste vengono inoltrate (inoltrate) su Heroku tramite il parametro di configurazione XForwardedSupport. Dovrebbe essere impostato sull'indirizzo del bilanciatore del carico Heroku e non c'è un modo per configurare tale pre-runtime. Invece, dovresti semplicemente dare un'occhiata all'intestazione della richiesta x-forwarded-proto per determinare se la richiesta al bilanciamento del carico di Heorku era tramite http o https. Forse qualcosa di simile:

Boolean secure = false; 
    if (request.headers.get("x-forwarded-proto") != null) { 
     secure = request.headers.get("x-forwarded-proto").values.contains("https"); 
    } 
    System.out.println("secure = " + secure); 

BTW: pila di cedro di Heroku non usa Nginx. Utilizza MochiWeb, un server Web basato su Erlang.

+0

Questo sembra essere il problema, come confermato da un assistente tecnico di heroku. Sono preoccupato che se il gioco non sa che la richiesta è sicura, farà cose come ad esempio eseguire di nuovo i reindirizzamenti agli URL non-ssl e cose del genere. Ad ogni modo, farò un tentativo per vedere cos'altro andrà storto e riferire. Grazie! –

+1

Fin qui tutto bene su questa soluzione! Per alcuni gestori annotati sto forzando un reindirizzamento su SSL in modo che l'azione non possa mai essere visualizzata su un normale http. Se qualcuno fosse interessato, inserirò del codice su come è stato fatto, lo troveremo davvero utile (anche adesso che questa correzione funziona per heroku). –

+0

Ho aggiunto alcune considerazioni su come rendere questo più utile nel codice di riproduzione a monte. Sarei interessato a ricevere più persone in questo ticket: [Gioca bug # 1406] (https://play.lighthouseapp.com/projects/57987/tickets/1406-play-123-124-playmvcrouter-does-not -Completamente-support-proxy-ssl # ticket-1406-4) –

3

thnx alla grande! hai risparmiato ore di lotta con heroku + play! Posso confermare che quando si imposta questo in application.conf

XForwardedSupport=all 

Heroku smette di lamentarsi con SIGTERM