我在这里遇到了一个非常奇怪的问题,每次我尝试在非 SSL 模式下浏览我的 Rails 应用程序时,Chrome (v16) 和 Firefox (v7) 一直强制我的网站在 HTTPS 中提供服务。
我的 Rails 应用程序使用 Capistrano、nginx、Passenger 和通配符 SSL 证书部署在 Ubuntu VPS 上。
我在 nginx.conf 中为端口 80 设置了这些参数:
passenger_set_cgi_param HTTP_X_FORWARDED_PROTO http;
passenger_set_cgi_param HTTPS off;
Run Code Online (Sandbox Code Playgroud)
我的 nginx.conf 的长版本可以在这里找到:https : //gist.github.com/2eab42666c609b015bff
ssl-redirect.include 文件包含:
rewrite ^/sign_up https://$host$request_uri? permanent ;
rewrite ^/login https://$host$request_uri? permanent ;
rewrite ^/settings/password https://$host$request_uri? permanent ;
Run Code Online (Sandbox Code Playgroud)
这是为了确保这三个页面在来自非 SSL 请求时使用 HTTPS。
我的 production.rb 文件包含这一行:
# Enable HTTP and HTTPS in parallel
config.middleware.insert_before Rack::Lock, Rack::SSL, :exclude => proc { |env| env['HTTPS'] != …
Run Code Online (Sandbox Code Playgroud)