Here’s the situation:
I have a site where a few pages are ssl-required but the whole site
is ssl-allowed. (In other words, most of the site can be reached by
either https or http.)
In order to minimize user’s browser warnings, I want to use https
for all assets on pages when the request is https. This is easy for
a separate asset host yet) but some images are hosted by an off-site
These images have https versions available, but on a different host,
e.g. regular images are at http://images.example.com/images/filename.jpg
but secure at https://ssl-images.example.com/images/filename.jpg. I
have tweaked my image-URL-producing functions to produce the right
image URL when they are asked, e.g. def get_image_url(ssl=false), so
get_image_url returns http://images.example.com and
get_image_url(true) returns https://ssl-images.example.com.
How do I know, inside a view, when to ask that function for SSL and
request.ssl? doesn’t appear to be available inside views. (Not
surprising given that it’s part of ActionController.)
I tried setting a global variable inside the controller (e.g.
@ssl_request = request.ssl?) but for some reason that’s not working,
It seems as though Rails is not getting the message that the request
is SSL. I’m using Nginx + Passenger for hosting; is there something
similar to the “proxy_set_header X-FORWARDED_PROTO https;” which
should be used when the request isn’t being proxied?