Rails不通过SSL渲染资产(404 Not Found错误)

时间:2012-04-02 21:55:17

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

我是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>

为什么会发生这种情况的任何想法?

谢谢,

罗格

2 个答案:

答案 0 :(得分:1)

您是否偶然使用基于Apache命名的虚拟主机?

如果是这样,请查看此链接以了解虚拟主机的SSL问题:

http://wiki.apache.org/httpd/NameBasedSSLVHosts

答案 1 :(得分:0)

谢谢大家,我终于弄明白发生了什么,为了其他有同样问题的人的利益,虚拟主机配置只被应用到默认端口(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