rails for ruby-on-rails ssl https rack rack-pow

ruby on rails - for - ¿Hay una manera fácil de tener pow serve https?



https for localhost rails (7)

Opción 1: pow completo con Tunnelss

He estado teniendo problemas con la solución Túneles , que es excelente, pero el navegador la notará como insegura , lo que le causará dolores de cabeza cuando juegue con CORS, por ejemplo.

Probé la solución PowSSL (la que usaba Stud), pero faltaba HTTP_X_FORWARDED_PROTO , lo que le ocasionará otro conjunto de dolores de cabeza cuando su aplicación necesite saber si se ha solicitado a través de HTTP o HTTPS (bueno, nunca lo hará). saber que era HTTPS).

Pero este último enfoque fue genial porque generaba un certificado válido para todos los dominios .dev POW configurados.

Así que construí tunnelss que combina los dos enfoques : ¡es una bifurcación de túneles y agrega generación de certificados!

Espero que lo disfrutes, no dudes en enviar solicitudes de extracción si quieres completarlo, es solo un truco rápido para MacOS X por ahora ...

Opción 2: cambiar a Invoker (usando mi tenedor ... por ahora)

Invoker es un gran reemplazo para Pow ya que incluye de forma nativa compatibilidad con HTTPS. ¡No tendrá que agregar otra solución encima de Pow para obtener HTTPS!

Sin embargo, en comparación con Pow, encontré que tenía 2 limitaciones:

  • debe especificar un comando para cada proceso para que pueda ejecutarlo,
  • no puede tener una regla predeterminada, manejando todas las solicitudes a localhost y proxingándolas a una aplicación específica.

Estas limitaciones no fueron difíciles de superar e hice una solicitud de extracción con los 2 cambios. Hasta que se acepte, puede instalar la versión bifurcada usando esto:

git clone https://github.com/rchampourlier/invoker invoker -b proxy-only-mode cd invoker gem build invoker.gemspec gem install invoker-1.5.0.gem

Con este fork, podrás usar una configuración global, por ejemplo ~/.invoker.ini como esta:

[my-rails-app] port = 3000 [my-sinatra-app] port = 9292 [default] port = 9292

... y ejecuta Invoker como proxy con este comando:

invoker ~/.invoker.ini -d

pow es genial, pero muchas cosas en mi aplicación presuponen https, y sería un dolor revisarlas todas y agregar "if not dev environment". ¿Es posible tener pow serve https?



Actualmente, POW no es compatible con SSL ( https://github.com/37signals/pow/issues/5 ). Sin embargo, muchas otras personas tienen tu mismo deseo, así que con suerte se incluirá en una versión futura.

Su mejor solución alternativa si no quiere pasar por la molestia de modificar su código es configurar Apache y generar un certificado SSL de desarrollo. Esto requerirá la modificación de su archivo de hosts y no es tan "astuto" como POW desafortunadamente, pero en el lado positivo evita molestos condicionales específicos del entorno.

Editar:

La última actualización es que POW se puede configurar con SSL usando Nginx como se describe en la siguiente guía:

http://shiny-bits-of-code.tumblr.com/post/4749553253/ssl-proxy-with-nginx




La forma más fácil que encontré fue usar túneles: https://github.com/jugyo/tunnels

$ gem install tunnels $ rvmsudo tunnels # or just use sudo if using rbenv

No se requiere configuración


Use stunnel para crear un túnel para el servidor de pow.

Me gusta:

stunnel3 -f -d 443 -r 127.0.0.1:80