ruby-on-rails – Rails SSL问题:(https://example.com)与request.base_url(http://example.com)不匹配

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails SSL问题:(https://example.com)与request.base_url(http://example.com)不匹配前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚在我的网站上安装了SSL证书.不幸的是,它破坏了登录功能.在网站上提交登录表单后,它只会重定向到主页.检查rails日志会显示以下错误
(https://example.com) didn't match request.base_url (http://example.com)

这是我的virtualhosts文件.我想我需要以某种方式强制使用SSL?

<VirtualHost *:80>
   ServerName example.com
   ServerAlias www.example.com
   Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
   ServerAdmin hello@example.com
   ServerName example.com
   ServerAlias www.example.com
   SSLEngine on
   SSLCertificateFile /home/user/sharetribe/lib/certificates/www_example_com.crt
   SSLCertificateKeyFile /home/user/sharetribe/lib/certificates/example.com.key
   SSLCertificateChainFile /home/user/sharetribe/lib/certificates/www_example_com.ca-bundle

   ProxyRequests Off
   <Proxy *>
      Order deny,allow
      Allow from all
   </Proxy>
   ProxyPass / http://localhost:3000/
   ProxyPassReverse / http://localhost:3000/
</VirtualHost>

解决方法

只是遇到同样的错误.在config / environments / production.rb中,请确保已设置:
config.force_ssl = true

虽然与此问题没有严格关联,但在设置此设置后,您需要确保您的反向代理(如果有的话)设置为通过从代理发送X-Forwarded-Proto标头来转发用于rails的协议.轨道.这样做的方式取决于您使用的反向代理(Apache,Nginx等)以及如何配置它,因此最好查找您正在使用的反向代理的特定文档.

猜你在找的Ruby相关文章