簡體   English   中英

Rails 3.1 Asset Pipeline無法通過nginx反向代理工作

[英]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服務器會檢查是否存在,如果它們不存在則編譯。

我建議觀看Ryan Bates 關於這個主題截屏

編輯:

據我所知,如果文件不存在,沒有辦法讓nginx將請求傳遞給后端,但是我對配置nginx並不是很熟悉,所以這可能是一個很好的問題。 ServerFault

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM