【问题标题】:Rails not rendering assets over SSL (404 Not Found error)Rails 未通过 SSL 呈现资产(404 Not Found 错误)
【发布时间】:2012-04-02 21:55:17
【问题描述】:

我是 Rails 的新手,如果我尝试使用 SSL 连接访问我的测试应用程序,我正在努力解决一个阻止我的资产被发现的问题。

作为我所指的示例,如果您尝试访问

http://domain.com/testapp 默认的 rails 页面加载正常,我完全没有问题。

您也可以访问我使用此路由创建的页面

http://domain.com/testapp/static_pages/home

但是,如果通过 HTTPS 访问相同的地址,我的所有资产都会返回 404 错误。我也无法访问任何路线(它们都返回 404)。

https://domain.com/testapp

https://domain.com/testapp/static_pages/home

我目前正在使用安装有 Passenger 的 Apache 服务器,这是我的虚拟主机配置的样子:

<Directory /var/www/testapp/public>
    PassengerEnabled on
    PassengerAppRoot /var/www/testapp
    RailsBaseURI /testapp
</Directory>

对为什么会发生这种情况有任何想法吗?

谢谢,

罗格

【问题讨论】:

  • 您是否偶然使用了基于 Apache 命名的虚拟主机?如果是这样,请查看此链接以了解虚拟主机的 SSL 问题:wiki.apache.org/httpd/NameBasedSSLVHosts
  • 请注意,这不是 SSL 本身的问题。 404 是通过 SSL 传输的,这证明 SSL 部分工作正常。它与服务器配置的其他部分有关。
  • 谢谢@EJP,我也很怀疑,终于设法解决了这个问题。
  • 干杯乔尔,您的链接没有回答我的问题,但确实让我朝着正确的方向前进。

标签: ruby-on-rails ruby apache ssl passenger


【解决方案1】:

谢谢大家,我终于弄清楚了发生了什么,所以为了其他有同样问题的人的利益,虚拟主机配置只应用于默认端口 (80),所以我也必须指定端口 443。

<VirtualHost *:80 *:443>
<Directory /var/www/testapp/public>
    PassengerEnabled on
    PassengerAppRoot /var/www/testapp
    RailsBaseURI /testapp
</Directory>
</VirtualHost>

对于使用 Media Temple 的 DV 服务器的人,必须在两个单独的文件中指定此配置(确保删除 VirtualHost 标签)。

vhost.conf
vhost_ssl.conf

别忘了重启 apache。

/usr/sbin/apachectl -K graceful

【讨论】:

    猜你喜欢
    • 2017-09-03
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 2019-05-12
    相关资源
    最近更新 更多