ruby-on-rails - heroku 上的 Rails 应用程序 - bluehost WordPress 站点的反向代理(https 到 http) - Chrome/FF 不会加载 Assets 。怎么修?

标签 ruby-on-rails wordpress ssl heroku reverse-proxy

我有一个在 heroku 上运行的 Rails 4.1 应用程序,它使用 heroku SSL 端点并具有有效的 SSL 证书 (config.force_SSL = true)。主站点上的 SSL 运行良好。我还有一个托管在 Bluehost 的 Wordpress 博客,未使用 SSL。我正在使用 rack-reverse-proxy gem将博客显示为 my-app.com/blog。

问题是 Chrome 和 Firefox 都拒绝从博客加载 Assets ,因为博客不安全。 我该如何解决这个问题?

技术细节

假设 Rails 应用程序是 https://my-app.com .

Wordpress 博客(在 Bluehost 上)位于 http://myappblog.com .

在我的 Wordpress 设置 -> 常规中,我将 Wordpress 地址和站点地址都设置为 https://my-app.com/blog (尽管如果 Wordpress 地址是 http://myappblog.comhttps://myappblog.com 也会发生此问题)。

Rails routes.rb

get "/blog" => redirect("/blog/")
# I have also tried get "/blog" => redirect("/blog/"), constraints: {protocol: /http/}

config.ru

require ::File.expand_path('../config/environment',  __FILE__)
use Rack::ReverseProxy do
  reverse_proxy(/^\/blog(\/.*)$/,
  'http://myappblog.com$1',
    opts = {:preserve_host => true})
end

Chrome 中的控制台错误

[blocked] The page at 'https://my-app.com/blog/' was loaded over HTTPS, but ran insecure content from 'http://my-app.com/blog/wp-content/themes/independent-publisher/js/skip-link-focus-fix.js?ver=20130115': this content should also be loaded over HTTPS.

最佳答案

我遇到了类似的问题。我用额外的 SSL 证书和 Wordpress HTTPs 插件搞砸了,但我永远无法让所有东西都能很好地与 rack-reverse-proxy gem 一起玩。

最后,我修复了它,但要注意:

在您的 routes.rb 中,确保您明确设置了您的博客站点的完整路径 URL:

   #OLD get "/blog" => redirect("/blog/")
   get "/blog" => redirect("http://my-app.com/blog/")

我还将“Wordpress 地址”和“站点地址”设置为 http://my-app.com/blog

警告:
使用此设置,如果您需要 wp-admin 区域的 SSL,则丢失的内容/css 错误可能会继续。在你的 wp-config.php 中使用 define('FORCE_SSL_LOGIN', true); 至少可以让你保护登录,如果该页面上没有 CSS,它只会影响需要的人登录以发布到网站。对于普通大众来说,一切都会很好。

关于ruby-on-rails - heroku 上的 Rails 应用程序 - bluehost WordPress 站点的反向代理(https 到 http) - Chrome/FF 不会加载 Assets 。怎么修?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23794365/

相关文章:

ruby-on-rails - Rails : after using scaffold, 我无法迁移

mysql - Rails 3 应用程序在保存时抛出 "undefined method ` update_attributes'"

ruby-on-rails - Ruby On Rails Mysql 访问被拒绝

ruby-on-rails - 为什么我收到422-无法处理的实体错误

java - 如何通过 443 以外的端口使用带有 HTTPS 的嵌入式 Jetty?

php - 记录帖子元字段更改的时间/日期 WordPress

wordpress - WooCommerce 以编程方式创建可下载产品的订单

wordpress - 禁用 WP REST API 的默认路由

ssl - 在负载均衡器中配置 HTTPS 后无法访问 Elastic Beanstalk 上的 HTTPS 站点

ssl - 为 Github Enterprise 服务器配置 TLS 证书