2012-03-04 22 views
12

Utilizzo il server Web sottile per servire la mia app Rails.Utilizzo di thin Web Server con HTTP e HTTPS

  • Avvio del server con thin start serve http richieste.
  • L'avvio del server con thin start --ssl serve le richieste https.

C'è un modo per avere thin servire sia http e https richieste contemporaneamente?

Il motivo per cui lo chiedo è perché quando uso il controller redirect_to some_path reindirizzano a http. Poiché thin sta servendo le richieste https, non viene eseguito il rendering.

Nota: sto utilizzando Rack::SSL in Rails 3.0.7.

+0

L'opzione più semplice è probabilmente quella di eseguire due istanze separate di thin: una che accetta le richieste SSL e una accetta le richieste di testo in chiaro. Qualche ragione per cui non vuoi farlo? (In alternativa, se thin è in esecuzione dietro un altro server Web, come Apache o Nginx, è necessaria solo un'istanza sottile: il server frontend può segnalare se la richiesta è arrivata su SSL.) –

+0

Non è possibile eseguire due istanze di 'thin' sulla stessa porta. –

+3

Non è possibile accettare entrambe le connessioni HTTP e HTTPS sulla stessa porta. (Questo è il motivo per cui, per convenzione predefinita, HTTP viene eseguito sulla porta 80 mentre HTTPS viene eseguito sulla porta 443.) –

risposta

8

(Commento convertito per rispondere a quanto richiesto.)

opzione più semplice è probabilmente quello di eseguire due istanze separate di sottile: una accettare le richieste SSL e uno di accettare le richieste in chiaro. Qualche ragione per cui non vuoi farlo? (In alternativa, se thin è in esecuzione dietro un altro server Web, come Apache o Nginx, è necessaria solo un'istanza di thin: il server frontend può segnalare se la richiesta è arrivata su SSL.)

Non è possibile accettare entrambi HTTP e connessioni HTTPS sulla stessa porta. (Questo è il motivo per cui, per convenzione predefinita, HTTP viene eseguito sulla porta 80 mentre HTTPS viene eseguito sulla porta 443.)

4

è possibile utilizzare il caposquadra (https://github.com/ddollar/foreman);

Si crea un Procfile con 2 processi quindi si avvia entrambi con il comando forman start.

mettere questo in un file chiamato Procfile:

web: thin start 
ssl: thin start --ssl 

Quindi utilizzare foreman start e lui avviare il processo 2. Ecco come sto usando ... spero che questo ti aiuti!

+2

Come funziona, dal momento che non puoi avere 2 istanze di thin run sulla stessa porta?E anche se si avvia l'istanza ssl su un'altra porta, ad esempio 'thin start --ssl -p 3001', come gestisci in modo intelligente i reindirizzamenti da http a https all'interno dell'applicazione? – jamesfzhang

+1

@ JZ11 Nginx gestirà in modo intelligente i reindirizzamenti/inoltro a seconda del protocollo. Ma mi piacerebbe anche conoscere la soluzione alternativa. –

Problemi correlati