由于某些原因,活动存储映像未完全加载: Image Not Loading

我正在运行Ruby 3.0.5和rails 7.0.5

我正在使用以下命令启动我的Rails应用程序:

RAILS_ENV=production /usr/share/rvm/wrappers/ruby-3.0.5/rails server -b /var/www/***/puma.sock

以下是我的Rails环境:

require "active_support/core_ext/integer/time"

Rails.application.configure do

  config.cache_classes = true

  config.eager_load = true


  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true


  config.public_file_server.enabled = ENV["RAILS_SERVE_STATIC_FILES"].present?


  config.assets.compile = true
  
  config.log_level = :info

  config.log_tags = [ :request_id ]


  config.action_mailer.perform_caching = false

  config.i18n.fallbacks = true

 
  config.active_support.report_deprecations = false

  config.log_formatter = ::Logger::Formatter.new

  if ENV["RAILS_LOG_TO_STDOUT"].present?
    logger           = ActiveSupport::Logger.new(STDOUT)
    logger.formatter = config.log_formatter
    config.logger    = ActiveSupport::TaggedLogging.new(logger)
  end

  # Do not dump schema after migrations.
  config.active_record.dump_schema_after_migration = false

  config.active_storage.service = :local

  config.active_storage.variant_processor = :mini_magick

  config.action_mailer.perform_deliveries = true

  config.action_mailer.default_url_options = { host: '***.com' }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    port: 587,
    domain: '***.com',
    address: 'mail.***.com',
    user_name: ENV['EMAIL_USER'],
    password: ENV['EMAIL_PWD'],
    authentication: 'plain',
    enable_starttls_auto: true
  }


  config.serve_static_assets = false
  config.assets.compress = true

end


使用nginx作为代理,下面是我的nginx配置:

upstream app {
  server unix:///var/www/***/puma.sock fail_timeout=0;
}

server {
    listen 80;
    server_name ***.com www.***.com;
    return 302 https://***.com$request_uri;
}

server {
  listen 443 ssl http2 default_server;
  listen [::]:443 ssl http2 default_server;
  
  server_name ***.com www.***.com;
  include snippets/ssl-certs.conf;
  include snippets/ssl-params.conf;

  # Ruby configuration
  root /var/www/***/public;  

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


  location / {
    proxy_pass http://app;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-NginX-Proxy true;

    proxy_read_timeout 120;
  }

  

  location ~ ^/(500|404|422).html {
    root /var/www/***/public;
  }

  error_page 500 502 503 504 /500.html;
  error_page 404 /404.html;
  error_page 422 /422.html;

  client_max_body_size 4G;
  keepalive_timeout 30;
}

我试着在不使用nginx的情况下运行该应用程序,只需使用以下命令

rails s -b 0.0.0.0 -e production

以及正确加载的图像

再次在nginx中运行时,我try 使用以下命令更改Rails的活动存储模式:

  config.active_storage.resolve_model_to_route = :rails_storage_proxy

但它什么也没做

推荐答案

我查看了浏览器中的请求.我收到以下错误:

在Firefox中为NS_ERROR_NET_PARTIAL_TRANSFER

net::ERR_HTTP2_PROTOCOL_ERROR 200英寸 chromium

并且请求的总时间始终为350毫秒,这导致我使用以下位置块禁用代理缓冲:

 location ~ ^/rails/active_storage/disk {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass http://myapp;

    proxy_buffering off;

    expires max;
  }

这成功地解决了这个问题

Ruby-on-rails相关问答推荐

在URL中将下划线更改为连字符Ruby on Rails

Heroku、Selenium、Chome和Chromedriver的复杂问题(抱歉,无法简单描述,请阅读详细信息)

Django模型在关系更新时更新相关对象

nginx 中的 Rails 7 Active Storage - 图像中途停止加载 net::ERR_HTTP2_PROTOCOL_ERROR 200

我的 Ruby on Rails Web API 的 Docker 映像未在服务器上构建,因为它未与 ruby​​gems.org 连接

为什么在使用 Ruby on Rails 时我的徽标没有出现在 Bootstrap 导航栏中?

使用嵌套属性时如何自动将父 ID 分配为外键?

File.open,写入和保存?

无法连接 localhost:3000 ruby​​ on rails in vagrant

Rails,获取模型中的资源路径

在 Rails 中复制模型实例

登录delay_job?

是否可以使用 Rails 迁移重命名索引?

ActiveRecord 查找现有表索引

您将 Rack 中间件文件和要求放在哪里?

如何在同一个 Rails 控制器操作中处理多个 HTTP 方法

如果多态关联的类型列不指向 STI 的基本模型,为什么多态关联对 STI 不起作用?

如何在每个操作的基础上禁用 Ruby on Rails 的日志(log)记录?

rails 3,如何在 Settings.yml 文件中使用 ENV 配置变量?

如何删除特殊字符?