declaración servidor en mi nginx.conf:https redirect for rails app behind proxy?
listen 1.2.3.4:443 ssl;
root /var/www/myapp/current/public;
ssl on;
ssl_certificate /etc/nginx-cert/server.crt;
ssl_certificate_key /etc/nginx-cert/server.key;
location/{
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://upstreamy;
break;
}
}
declaración contra la corriente en nginx.conf:
upstream upstreamy {
server unix:/var/www//myapp/shared/sockets/unicorn.sock fail_timeout=0;
}
esto funciona bien, miaplicacion es alcanzable como https://somehost
pero está generando la aplicación http url's para redireccionamientos, así que por ejemplo cuando se autentica con el dispositivo,/se redirige a http://somehost/user/sign_in en lugar de a https (desde el punto de vista de la aplicación Rails, de todas maneras es http).
me trataron
proxy_pass https://upstreamy;
sino que simplemente trata de cifrar el tráfico entre nginx y los unicornios que se ejecutan la aplicación rieles.
También probé, en application_helper.rb:
# http://stackoverflow.com/questions/1662262/rails-redirect-with-https
def url_options
super
@_url_options.dup.tap do |options|
options[:protocol] = Rails.env.production? ? "https://" : "http://"
options.freeze
end
pero parece que no funciona.
¿Cómo se resolvería esto?
Editar: así que, el objetivo no es hacer que la aplicación de rieles requiera ssl, ni que se vea forzado a usar ssl; el objetivo es hacer que la aplicación Rails genere https: // url al redireccionar ... (creo que todas las demás URL son relativas).
Gracias, que funciona perfectamente! –
¡Impresionante! Configurar nginx puede ser muy doloroso. Muy doloroso ... :) –
No pude usar proxy_set_header, pero acabo de reenviar todo a mi proxy para el método "publicar" y reescribir la url para el get. Trabajando muy bien hasta ahora. – nembleton