即使nginx配置错误,Rails也显示图像?

时间:2018-05-31 20:38:18

标签: ruby-on-rails ruby-on-rails-5

我有一个Rails 5应用程序。我使用Carrierwave gem将图片上传到public/system/...

在审核生产应用程序以进行性能调整时,我意识到我错误配置了nginx,并且它只提供来自/assets而非/assets 的静态文件/system

我有什么:

location ~ ^/assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
}

我(我想)应该拥有什么:

location ~ ^/(assets|system)/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
}

但是,config.public_file_server.enabled = false设置为production.rb

所以现在我很困惑--Rails如何为这些图像提供服务?我假设我对资产管道实际上的工作方式有一个(严重)不完整的理解?

更新:nginx config

upstream puma {
  server unix:///home/deploy/apps/myapp/shared/sockets/mydomain.sock;
}

server {
  listen 80 default;
  server_name mydomain.com;

  root       /home/deploy/apps/myapp/current/public;
  access_log /home/deploy/apps/myapp/shared/log/nginx.access.log;
  error_log  /home/deploy/apps/myapp/shared/log/nginx.error.log info;

  location ~ ^/(assets|system)/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  location ~ ^/(robots.txt|sitemap.xml.gz)/ {
    root /home/deploy/apps/myapp/current/public;
  }

  try_files $uri/index.html $uri @puma;
  location @puma {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header Host $http_host;
    proxy_redirect off;

    proxy_pass http://puma;
  }

  location /cable {
    proxy_pass http://puma;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 50M;
  keepalive_timeout 10;

  listen 443 ssl; # managed by Certbot
  # ssl certificate info...

}

1 个答案:

答案 0 :(得分:1)

这将有助于发布此应用程序的整个nginx配置。当乘客,美洲狮等服务时,Rails会尊重public_file_server。但是,它可以很容易地用nginx覆盖。 常见的nginx配置行

{{1}}

基本上告诉nginx服务/公共“因为它”并使public_file_server无关紧要。 (或许)。

相关问题