2016-11-08 57 views
1

在生產模式下使用Nginx後,我正在使用的幾個寶石的資產文件未加載。我非常確定它與我的Nginx配置中的位置塊有關,但我不確定要添加什麼,以便Nginx將指向文件所在的位置。使用Nginx時的Gem資產文件

有問題的寶石sidekiq和機架迷你探查

upstream cable { 
    server unix:///tmp/cable.sock; 
} 

server { 
    listen 80; 
    server_name 66.207.0.133; 
    root /home/john/rails/cable/public/assets; 

    location/{ 
    proxy_pass http://cable; 
    proxy_set_header Host $host; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 

    location ~* \.(css|js|otf|woff|ttf|svg|eot)$ { 
    root /home/john/rails/cable/public/; 
    } 

} 

在Nginx的日誌中的錯誤是:

2016/11/07 21:04:36 [error] 22745#22745: *51175 open() "/home/john/rails/cable/public/sidekiq/javascripts/dashboard.js" failed (2: No such file or directory), client: 69.49.80.136, server: 66.207.0.133, request: "GET /sidekiq/javascripts/dashboard.js HTTP/1.1", host: "66.207.0.133", referrer: "http://66.207.0.133/sidekiq" 

顯然第二位置塊被重定向對所需的所有請求.js和.css文件放到錯誤的位置,但是我怎樣才能將請求重定向到/sidekiq/*.js到正確的文件?

+1

你知道你的寶石資產文件的位置嗎? –

+0

而正確的位置將是...? – cnst

+0

感謝您接受/ + 1/bounty,+1! – cnst

回答

2

您首先需要find正確的文件在您的文件系統中。

find/-path "*/javascripts/dashboard.js" 

網絡搜索顯示它可能是/home/site/homepage_production/shared/bundle/ruby/1.9.1/gems/sidekiq-2.16.1/web/assets/javascripts/dashboard.js

所以,如果你得滿足,從/sidekiq/javascripts/dashboard.js在網絡上,並提供了內/sidekiq/所有請求都是靜態的資產,那麼以下應使用:

location ^~ /sidekiq/ { 
    alias /home/site/homepage_production/shared/bundle/ruby/1.9.1/gems/sidekiq-2.16.1/web/assets/; 
} 

有關詳細信息,請參閱: