在开发模式下,Rails不为nginx提供资源

时间:2011-10-21 14:43:15

标签: ruby-on-rails ruby assets

我在Debian 6中使用虚拟机。我在前面有nginx来提供静态文件('jpg,png,css,js ...)和apache来运行脚本。

但是我遇到了问题,我的资产文件出现了404错误。

我的nginx配置:

server {
  listen      80;
  server_name mysite ;

  #access_log  /var/log/nginx/access.mysite.log;
  #error_log   /var/log/nginx/error.mysite.log;


  # Les requêtes sont transmises au processus Apache écoutant en local sur le port 81
  location / {
    proxy_pass         http://127.0.0.1:81/;
    include  /etc/nginx/proxy.conf;
  }

  # On remap sur la racine du domaine
  if ($host != "mysite"){
        rewrite ^(.*)$ http://mysite$1 permanent;
        break;
      }

  # On distribue les fichiers statiques directement
  location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|txt|srt|swf)$ {
    root  /home/php/mysite/public;
    #access_log  /var/log/nginx/access.mysite.log;
    #error_log   /var/log/nginx/error.mysite.log;
    expires           1d;
  }
}

我的apache配置:

 <VirtualHost *>
        DocumentRoot /home/php/mysite/public
        ServerName mysite
        PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.9
        PassengerRuby /usr/local/bin/ruby
        RailsEnv development
        #ServerAlias
        <Directory  /home/php/mysite/public>

                #Conf Standard
                 AllowOverride All
                 Order allow,deny
                 Allow from all

        </Directory>
        TransferLog /dev/null
</VirtualHost>

My development.ru

  MySite::Application.configure do
    # Settings specified here will take precedence over those in config/application.rb

    # In the development environment your application's code is reloaded on
    # every request.  This slows down response time but is perfect for development
    # since you don't have to restart the web server when you make code changes.
    config.cache_classes = false

    # Log error messages when you accidentally call methods on nil.
    config.whiny_nils = true

    # Show full error reports and disable caching
    config.consider_all_requests_local       = true
    config.action_controller.perform_caching = false

    # Don't care if the mailer can't send
    config.action_mailer.raise_delivery_errors = false

    # Print deprecation notices to the Rails logger
    config.active_support.deprecation = :log

    # Only use best-standards-support built into browsers
    config.action_dispatch.best_standards_support = :builtin

    # Do not compress assets
    config.assets.compress = false

    # Expands the lines which load the assets
    config.assets.debug = true

  end

我和乘客一起使用rails 3.1.1。我瘦了它真的是一个nginx问题,因为当我去http://mysite:81时(直接在apache上),一切正常。

感谢您的帮助。

1 个答案:

答案 0 :(得分:8)

我的问题是关于我的nginx配置

# On distribue les fichiers statiques directement
  location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|txt|srt|swf)$ {
  root  /home/php/mysite/public;
  #access_log  /var/log/nginx/access.mysite.log;
  #error_log   /var/log/nginx/error.mysite.log;
  expires           1d;
}

所以我删除它,它禁用nginx来提供静态文件,但它在开发模式下不是很有用。

谢谢你的帮助。