ruby-on-rails-3 - nginx 不在 Rails 3 中提供静态 Assets

标签 ruby-on-rails-3 nginx assets

叠花。我的 Rails nginx 配置有问题。我正在运行一个 Rails 3.0.12 应用程序,我对 nginx 很陌生。

我似乎无法让 nginx 提供静态 Assets 。对于 /public 中的每个请求文件夹我得到 404。我正在发布到目前为止我得到的 nginx 配置。也许我错过了什么
nginx.conf :

user rails;
worker_processes  1;
daemon off;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
  worker_connections  2048;
}

http {
  include       /etc/nginx/mime.types;
  default_type  application/octet-stream;

  access_log  /var/log/nginx/access.log;

  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;

  keepalive_timeout  65;

  gzip  on;
  gzip_http_version 1.0;
  gzip_comp_level 2;
  gzip_proxied any;
  gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

  server_names_hash_bucket_size 64;

  include /etc/nginx/conf.d/*.conf;
  include /etc/nginx/sites-enabled/*;
}
sites-enabled/project.conf :
upstream project {
  # fail_timeout=0 means we always retry an upstream even if it failed
  # to return a good HTTP response (in case the Unicorn master nukes a
  # single worker for timing out).

  # for UNIX domain socket setups:
  server unix:/tmp/project.socket fail_timeout=0;
}

server {
  listen 80;
  root /srv/www/project/current/public;
  passenger_enabled on;
  server_name dev.project.eu;
  server_name *.dev.project.eu;

  location / {
      #all requests are sent to the UNIX socket
      proxy_pass  http://project;
      proxy_redirect     off;

      proxy_set_header   Host             $host;
      proxy_set_header   X-Real-IP        $remote_addr;
      proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

      client_max_body_size       10m;
      client_body_buffer_size    128k;

      proxy_connect_timeout      90;
      proxy_send_timeout         90;
      proxy_read_timeout         90;

      proxy_buffer_size          4k;
      proxy_buffers              4 32k;
      proxy_busy_buffers_size    64k;
      proxy_temp_file_write_size 64k;
      root /srv/wwww/project/current/public;
    }

}

我试过删除 location /阻止来自 project.conf ,但它没有做任何事情, Assets 仍然不可见。

我也知道 serve_static_assets在 Rails 中切换,但我宁愿让 nginx 为这些 Assets 提供服务,因为它应该这样做。

最佳答案

您需要添加类似的内容( documentation on locations ):

location / {
  try_files $uri @ruby;
}

location @ruby {
    proxy_pass  http://project;
}

关于ruby-on-rails-3 - nginx 不在 Rails 3 中提供静态 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10411268/

相关文章:

node.js - 在 nginx (https) 中托管多个服务器 block

ruby - $ GEM_HOME和$ GEM_PATH在旅客中设置错误

nginx - 如何禁用 Nginx 索引目录以仅允许 MaxCDN/NetDNA CDN?

reactjs - 在 ssr 时使用动态路由时未找到 Nextjs Assets 404

ios10 - Xcode 9、iOS 10 Assets 问题

ruby-on-rails - 如何在 Rails 事件记录查询中使用包含内的连接?

javascript - 使用 jquery 自动保存对文本字段的更改

ruby-on-rails - Zurb Foundation 单选按钮和复选框在 Rails 中不起作用

ruby-on-rails - Rails3 和 readline 问题

android-studio - 导入 Sceneform Assets 不会生成 .sfa 和 .sfb 文件