title: Configure Nginx to work with Rails 3 assets pipeline
body: <p>I am trying to configure Nginx to be used with Rails 3 assets pipeline.</p>
  
  <pre><code>http {
      passenger_root /home/ubuntu/.rvm/gems/ruby-1.9.3-p327/gems/passenger-3.0.18;
      passenger_ruby /home/ubuntu/.rvm/wrappers/ruby-1.9.3-p327/ruby;
  
      include       mime.types;
      default_type  application/octet-stream;
      sendfile        on;
  
      #keepalive_timeout  0;
      keepalive_timeout  65;
  
      server {
          listen       80;
          server_name  myprojecthost.com *.myprojecthost.com;
          #charset koi8-r;
  
          #access_log  logs/host.access.log  main;
          root /var/www/&lt;my proj&gt;/current/public;
  
          location / {
              passenger_enabled on;
              rails_env staging;
                  root /var/www/&lt;my proj&gt;/current/public;
          }
  
          location ~ ^/(assets)/{
                  root /var/www/&lt;my proj&gt;/current/public;
                  expires max;
                  add_header Cache-Control public;
          }
        }
    }
  </code></pre>
  
  <p>Rails is configured as follows:</p>
  
  <pre><code>MyProj::Application.configure do
    # Code is not reloaded between requests
    config.cache_classes = true
  
    # Full error reports are disabled and caching is turned on
    config.consider_all_requests_local       = false
    config.action_controller.perform_caching = true
  
    # Disable Rails's static asset server (Apache or nginx will already do this)
    config.serve_static_assets = true
  
    # Compress JavaScripts and CSS
    config.assets.compress = true
  
    # Don't fallback to assets pipeline if a precompiled asset is missed
    config.assets.compile = true
  
    # Generate digests for assets URLs
    config.assets.digest = true
  
    # Defaults to Rails.root.join("public/assets")
    # config.assets.manifest = YOUR_PATH
  
    # Specifies the header that your server uses for sending files
    # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
    config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
  
    # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
    # config.force_ssl = true
  
    # See everything in the log (default is :info)
    config.log_level = :debug
  
    # Use a different logger for distributed setups
    # config.logger = SyslogLogger.new
  
    # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
    # the I18n.default_locale when a translation can not be found)
    config.i18n.fallbacks = true
  
    # Send deprecation notices to registered listeners
    config.active_support.deprecation = :notify
  end
  </code></pre>
  
  <p>My css files return 404 error.
  If I remove the block "location ~ ^/(assets)/{" it works well but it is terribly slow.</p>
  
  <p>Can someone help me?</p>