【问题标题】:How to make S3 serve the same file using http and https in a rails app?如何使 S3 在 Rails 应用程序中使用 http 和 https 提供相同的文件?
【发布时间】:2014-04-20 23:29:39
【问题描述】:

我有一个在 Amazon EC2 中运行的 Rails 应用程序,并在 S3 中提供文件。

我的问题是:我的所有应用程序都在 http 中正常运行,我想使用 https。但是,前提条件是同一个文件响应 http 和 https。

例如:如果我有一个文件http://domain.s3.amazon.com/file.js,它也应该回复https://domain.s3.amazon.com/file.js

我的脚本会被其他客户在http和https环境中使用,所以它必须是http和https,否则浏览器会给出这个消息:

[blocked] The page at 'https://mycustomerurl' was loaded over HTTPS, but ran insecure content from 'http://mydomain.com/myfile.js': this content should also be loaded over HTTPS.

我该怎么做?

谢谢

PS:我看过一些示例,但整个应用程序都转到 https,我有这个特定的必要条件

【问题讨论】:

    标签: ruby-on-rails ssl https amazon-ec2 amazon-s3


    【解决方案1】:

    只要域相同,最简单的方法就是将协议放在 url 的开头。

    只需请求//domain.s3.amazon.com/file.js

    【讨论】:

    • 但这不是我的问题:我的问题是我正在提供 .js 文件,并且同一文件必须响应 http 和 https 请求。我的脚本将被 http 和 https 环境中的其他客户端使用
    • 如果他们在没有协议的情况下请求脚本,它将使用页面的当前协议。只要 http 域与 https 域相同,就可以使用。
    • <script src="//domain.s3.amazon.com/file.js"></script>
    • 但是例如看看这个link。如果您尝试此操作,您将被重定向到 https 版本。这就是我要避免的
    【解决方案2】:

    我终于找到了解决办法。

    归根结底,这不是应用程序级别的问题,而是服务器配置级别的问题。

    我已购买证书并安装在我的服务器中。然后我配置了 nginx:

    worker_processes 1;
    http {
    server {
    listen 443;
    ssl on;
    ssl_certificate /usr/local/nginx/conf/cert.pem;
    ssl_certificate_key /usr/local/nginx/conf/cert.key;
    keepalive_timeout 70;
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-15
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      相关资源
      最近更新 更多