Отсутствуют прикрепленные файлы при использовании Amazon S3 и Rails Active Storage

Я успешно использую Active Storage при разработке (дисковое хранилище), но когда приложение развернуто (хранилище Amazon S3), все мои вложения не обнаруживаются.

Загрузка происходит без проблем - файлы появляются в корзине S3 и создаются записи базы данных активного хранилища. Но каждый раз, когда я использую .variant() или url_for(), все эти файлы отсутствуют.

Логи Rails мне ничего не говорят, как будто запроса вообще не было. Это заставляет меня думать, что конфигурация моего веб-сервера неправильная.

Это моя текущая конфигурация nginx:

upstream my_app {
  server unix:/srv/example.com/current/tmp/sockets/unicorn.sock fail_timeout=0;
}

server {
  listen 80;
  server_name example.com;
  return 301 https://example.com$request_uri;
}

server {
  listen 443 ssl;
  server_name example.com;
  root /srv/example.com/current/public;

  include h5bp/directive-only/ssl.conf;
  ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

  include h5bp/basic.conf;
  include h5bp/auth.conf;

  try_files $uri/index.html $uri @unicorn;
  location @unicorn {
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://my_app;
  }

  access_log /var/log/nginx/example.com/access.log;
  error_log /var/log/nginx/example.com/error.log;

  charset utf-8;
  error_page 404 /404.html;
  error_page 502 503 @maintenance;

  if (-f /srv/example.com/shared/maintenance.txt) {
    return 503;
  }

  location @maintenance {
    root /srv/maintenance;
    rewrite ^(.*)$ /index.html break;
  }
}

basic.conf отсюда: https://github.com/h5bp/server-configs-nginx/tree/master/h5bp auth.conf - это только простая HTTP-аутентификация.

Журнал Nginx показывает такие строки:

2018/03/12 11:48:32 [error] 9402#9402: *16285 open() "/srv/example.com/current/public/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBDZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--fe2fe760c83020f37a9fe8f78bcb4fc958744008/test-powerpoint-document.pptx" failed (2: No such file or directory), client: xxx.xx.xxx.xx, server: example.com, request: "GET /rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBDZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--fe2fe760c83020f37a9fe8f78bcb4fc958744008/test-powerpoint-document.pptx?disposition=upload HTTP/1.1", host: "example.com"

Что мне не хватает?


person Rolandas Barysas    schedule 12.03.2018    source источник


Ответы (1)


Если кто-то столкнется с той же проблемой, я исправил свой случай, прокомментировав следующее:

# h5bp/location/expires.conf
location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|mp4|ogg|ogv|webm|htc)$ {
  access_log off;
  add_header Cache-Control "max-age=2592000";
}

Теперь все изображения отображаются и вложения загружаются без каких-либо проблем.

person Rolandas Barysas    schedule 19.04.2018