【问题标题】:Phusion Passenger + Heroku + Cloudfront: CORS ConfigurationPhusion Passenger + Heroku + Cloudfront:CORS 配置
【发布时间】:2014-04-24 14:08:31
【问题描述】:

我使用 Cloudfront 从 cdn.myapp.com 提供字体。

我正在使用 font_assets gem,它帮助我发送 CORS 标头以使我的字体在 Firefox(以及其他)中被接受。

我最近将我的网络服务器移至 Phusion Passenger,我对此非常满意(速度!)。

但自从我迁移后,我无法发送这些标头,我怀疑 nginx 对此负责。

如何在 Heroku 上使用 Phusion 发送自定义标头?我可以从 heroku 访问 nginx 配置,还是要设置其他配置?

感谢支持!

【问题讨论】:

    标签: ruby-on-rails heroku nginx passenger cors


    【解决方案1】:

    从现在开始,应用配置中没有此选项。

    本次讨论:https://groups.google.com/forum/#!topic/phusion-passenger/nskVxnxFssA 解释说这将是可能的在不久的将来

    【讨论】:

    • 你解决了吗? Here is my solution。如果您在这方面有更好的nginx 配置,请告诉我。
    • 从那以后我找到了解决办法。显然他们对 Phusion 进行了更改以使其工作:groups.google.com/d/msg/phusion-passenger/nskVxnxFssA/… 谢谢你的!
    • 是的,这正是我所做的。相对于 Access-Control 行,您的 nginx.conf.erb 是什么样的?它和我的一模一样还是有什么不同?
    • 我还没有使用过这个解决方案。很酷,你报告了!
    【解决方案2】:

    我尝试使用 rack-cors gem,但我花了一段时间才注意到虽然使用 Heroku 的 Rails 12 Factor Gem Phusion Passenger 5.0.10 (Nginx) 正在为资产服务。

    仅供将来参考,基于@user664833's solution,这是我运行在 Heroku 上托管的 Rails 4.2 应用程序的设置,其中 Phusion Passenger 作为服务器,Amazon Cloudfront 作为 CDN,使用 cdn.my-domain.com 作为 CNAME仅分发和限制GETHEADmy-domain.com 子域的请求:

    # config/nginx.conf.erb
    location @static_asset {
      gzip_static on;
      expires max;
      add_header Cache-Control public;
      add_header ETag "";
      # added configuration for CORS for font assets
      if ($http_origin ~* ((https?:\/\/[^\/]*\.my-domain\.com(:[0-9]+)?)) {
        add_header 'Access-Control-Allow-Origin' "$http_origin";
        add_header 'Access-Control-Allow-Credentials' 'true'; # only needed for SSL
        add_header 'Access-Control-Allow-Methods' 'GET, HEAD';
        add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With';
      }
      # end of added configuration
    }
    

    我编辑了缓存行为以将 Origin 标头列入白名单。

    并将 Origin 设置(Origin 选项卡)更改为 Match viewer(如果您想使用 SSL)。

    最后,在 Invalidations 选项卡中创建一个失效(如果是新配置则无需这样做),使用/* 清除所有内容。

    希望这会为某人节省时间。

    【讨论】:

    • 您好,我已经配置了您建议的所有内容,但仍然收到“Access-Control-Allow-Origin”错误。 Nginx&Passenger 按预期工作。我也配置了云端,但没有运气
    猜你喜欢
    • 2015-09-17
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多