2013-08-25 20 views
8

私は、レールアプリケーションから静的資産を提供するためにApacheサーバーを構成しようとしています。私はすでに提案された設定を試しましたが、私の資産はまだ表示されていません。直接アクセスしようとしたときに、一致するコントローラが見つかりませんでしたが、アセットがApacheによって直接処理されるべきです。 私のApacheの設定は、次のようになりますApacheはレールアプリケーション用の静的資産をサーバーにしません

<VirtualHost *:80> 
ServerName xxx 
DocumentRoot /home/xxx/test/public 
PassengerEnabled off 

<LocationMatch "^/assets/.*$"> 
Header unset ETag 
FileETag None 
ExpiresActive On 
ExpiresDefault "access plus 1 year" 
</LocationMatch> 
ProxyPass/http://127.0.0.1:9292/ 
ProxyPassReverse/http://127.0.0.1:9292/ 
</VirtualHost> 

は、私が何かを逃しましたか?

+0

資産、?あなたはpublic/assetsフォルダへのレーキをしましたか? – clyde

+0

私は資産を集めて、彼らはすべての場所にあります – soupdiver

+0

これを解決できましたか? – nathanvda

答えて

0

私はそれがすべての作業を右にするために、

RAILS_ENV=production bundle exec rake assets:precompile 

を使用し、私は(私はcustom.css.scssを作成していた...のconfig/application.rbに

module MyApp 
    class Application < Rails::Application 
. 
. 
    config.assets.precompile += ['custom.css']  
    config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif) 
. 
. 
    end 
end 

これを追加しました。しかし、Railsは上記のように.scssを認識しませんでした)。私はあなたの資産がすべてプリコンパイル後にpublic/assetsフォルダにあると仮定します。私はあなたがLocationMatchでやっていることを理解していない、私の無知を赦してください。さらに、私はポート80を使用しませんでした。私は8000を使用しました。

また、設定/環境/ production.rbの設定があります、

# Disable Rails's static asset server (Apache or nginx will already do this). 
config.serve_static_assets = false 
+2

申し訳ありませんが、これは本当に私の質問に適合しません。私はあなたが言及したすべてのステップを行ったが、それを理解すれば、資産を提供するときには右のレールは関与してはならない。 Apacheはこれを単独で行うべきです。そのために 'LocationMatch'があります。しかし、レールは依然としてアセットを直接アセットで実行する必要があるアセットディレクトリへのリクエストを処理しています – soupdiver

0

これは、Apacheサーバに関するRailsのアセットパイプラインのドキュメントから直接です:

http://guides.rubyonrails.org/asset_pipeline.html

4.1.1 Far-future expiresヘッダー

プリコンパイルされたアセットが存在するファイルシステム上にあり、Webサーバーから直接提供されます。彼らはデフォルトでは未来のヘッダーを持っていないので、フィンガープリンティングの利点を得るには、ヘッダーを追加するためにサーバー構成を更新する必要があります。 Apacheの

:.cssファイルのように

# The Expires* directives requires the Apache module 
# `mod_expires` to be enabled. 
<Location /assets/> 
    # Use of ETag is discouraged when Last-Modified is present 
    Header unset ETag 
    FileETag None 
    # RFC says only cache for 1 year 
    ExpiresActive On 
    ExpiresDefault "access plus 1 year" 
</Location> 
関連する問題