2011-10-24 26 views
3

私は現在、私の静的な資産の作業(例えば、スタイルシート、JavaScriptの)のRailsでは、serve_static_assetsを有効にする必要がありますか?

なし(このarticleを使用していない)シンにプロキシにはApacheを使用しています。 Apacheがそれらを提供していると思われるのですか?にconfig.serve_static_assetsを有効にする必要がありますか?もしApacheがそれらを提供することになっているなら、私はおそらく何が間違っているのでしょうか?ここで

は私のApacheの設定です:

<VirtualHost *:80> 
    ServerName example.com 
    ServerAlias www.example.com 

    DocumentRoot /home/r/public_html/example/public 

    RewriteEngine On 

    <Proxy balancer://thinservers> 
    BalancerMember http://127.0.0.1:5000 
    BalancerMember http://127.0.0.1:5001 
    BalancerMember http://127.0.0.1:5002 
    </Proxy> 

    # Redirect all non-static requests to thin 
    RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f 
    RewriteRule ^/(.*)$ balancer://thinservers%{REQUEST_URI} [P,QSA,L] 

    ProxyPass/balancer://thinservers/ 
    ProxyPassReverse/balancer://thinservers/ 
    ProxyPreserveHost on 

    <Proxy *> 
    Order deny,allow 
    Allow from all 
    </Proxy> 

    # Custom log file locations 
    ErrorLog /home/r/public_html/example/log/error.log 
    CustomLog /home/r/public_html/example/log/access.log combined 

</VirtualHost> 

答えて

7

は、次の2つのプロキシ指示行を削除し、それが動作するはずです:

ProxyPass/balancer://thinservers/ 
ProxyPassReverse/balancer://thinservers/ 

最初の書き換えライン(RewriteCond)かどうかを確認するためのテストですファイルはパブリックディレクトリのファイルシステム上に存在します。失敗した場合は、次の書き換え行(RewriteRule)に進み、リクエストをバランスのとれたプロキシに渡します。この行は実際には2つの代理ディレクティブ行と同じことをします。

テストが成功した場合(つまり、静的ファイルが存在する場合)、この行はスキップされます。上の2行を削除した場合、apacheはドキュメントルートからファイルを提供します。しかし、上の行では、とにかくプロキシに渡してしまうだけです。その後、あなたが指摘したように、レールはデフォルトでこのファイルを提供するように設定されず、404を返します。

+0

Duh!私はプロキシループを作成したばかりの行を忘れていました。それが2008年からの指示に従ったものです。 – rxgx

関連する問題