2012-03-04 27 views
12

Estoy usando el servidor web Thin para servir mi aplicación Rails.Uso de Thin Web Server con HTTP y HTTPS

  • Al iniciar el servidor con thin start se atienden http solicitudes.
  • Al iniciar el servidor con thin start --ssl se atienden https solicitudes.

¿Hay una manera de tener thin dedicados a ambas http y https solicitudes al mismo tiempo?

La razón por la que pregunto es porque cuando uso redirect_to some_path en mis controladores, se redireccionan a http. Como thin está atendiendo solicitudes https, no se procesa nada.

Nota: Estoy usando Rack::SSL en Rails 3.0.7.

+0

La opción más simple es probablemente ejecutar dos instancias separadas de thin: una que acepte solicitudes SSL y una que acepte solicitudes de texto sin formato. ¿Alguna razón por la que no quieres hacer esto? (Alternativamente, si thin se ejecuta detrás de otro servidor web, como Apache o Nginx, solo necesita una instancia de thin: el servidor de frontend puede informar si la solicitud ingresó a través de SSL) –

+0

No puede ejecutar dos instancias de 'thin' en el mismo puerto. –

+3

Tampoco puede aceptar conexiones HTTP y HTTPS en el mismo puerto. (Esta es la razón por la cual, por convención predeterminada, HTTP se ejecuta en el puerto 80 mientras que HTTPS se ejecuta en el puerto 443.) –

Respuesta

8

(Comentario convierte en responder a lo solicitado.)

opción más sencilla es probablemente para ejecutar dos instancias independientes de fina: uno que acepte peticiones SSL y uno que acepte peticiones de texto plano. ¿Alguna razón por la que no quieres hacer esto? (Alternativamente, si thin se ejecuta detrás de otro servidor web, como Apache o Nginx, solo necesita una instancia de thin: el servidor frontend puede informar si la solicitud ingresó a través de SSL)

No puede aceptar tanto HTTP y conexiones HTTPS en el mismo puerto. (Esta es la razón por la cual, por convención predeterminada, HTTP se ejecuta en el puerto 80 mientras que HTTPS se ejecuta en el puerto 443.)

4

puede usar el capataz (https://github.com/ddollar/foreman);

Crea un archivo de proceso con 2 y luego inicia ambos con el comando forman start.

poner esto en un archivo llamado Procfile:

web: thin start 
ssl: thin start --ssl 

A continuación, utilice foreman start y se inicia el proceso 2. Así es como estoy usando ... ¡espero que esto te ayude!

+2

¿Cómo funciona esto ya que no puedes tener 2 instancias de ejecución delgada en el mismo puerto?E incluso si inicia la instancia de ssl en otro puerto, diga 'thin start --ssl -p 3001', ¿cómo maneja inteligentemente los redireccionamientos de http a https dentro de su aplicación? – jamesfzhang

+1

@ JZ11 Nginx manejará inteligentemente los redireccionamientos/reenvíos según el protocolo. Pero también me gustaría saber la solución. –