[英]Rails 3.1 Asset Pipeline does not work through nginx reverse proxy
我正在将Rails 3.0应用程序升级到Rails 3.1,并且资产管道在开发中不起作用。 我使用nginx反向代理瘦。
例如
javascript_include_tag 'application' # => <script src="/javascripts/application.js" type="text/javascript"></script>
随着卷曲......
$ curl -sL -w "%{http_code}" "http://myapp.dev/javascripts/application.js" -o /dev/null
404
$ curl -sL -w "%{http_code}" "http://myapp.dev/assets/application.js" -o /dev/null
404
但是当我直接点击瘦而不是通过nginx时,我得到了我期望的结果:
javascript_include_tag 'application' # => <script src="/assets/application.js" type="text/javascript"></script>
它有用吗?
$ curl -sL -w "%{http_code}" "http://localhost:3000/assets/application.js" -o /dev/null
200
是的! 为什么会出现这种情况?
以下是我的nginx配置的摘录: https : //gist.github.com/1163638
很高兴提供更多信息,请问!
您是否修改了开发环境文件? 默认情况下,资产管道工作仅在生产中发生。
您的问题很可能是您需要预编译资产。 试试跑步
rake assets:precompile
这是因为nginx会盲目地尝试为它应该提供的资产服务,不像ruby服务器会检查是否存在,如果它们不存在则编译。
编辑:
据我所知,如果文件不存在,没有办法让nginx将请求传递给后端,但是我对配置nginx并不是很熟悉,所以这可能是一个很好的问题。 ServerFault 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.