Запрос изображения возвращается 403/404 - PullRequest
1 голос
/ 29 марта 2012

Я использую Nginx + Unicorn с моим приложением rails 3.0.3.

Вот мой конфиг nginx для приложения:

upstream unicorn {
  server unix:/tmp/unicorn.myapp.sock fail_timeout=0;
}

server {
  listen 80 default deferred;
  root /home/deployer/apps/myapp/current/public;

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

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

Вот список каталогов приложения public/images:

lrwxrwxrwx  1 deployer admin     56 2012-03-28 17:06 other -> /home/deployer/other_images/
-rw-rw-r--  1 deployer admin   6646 2012-03-28 17:08 rails.png

Как видите, other является символической ссылкой. Вот список каталогов для /home/deployer/other_images/

-rw-r--r-- 1 deployer admin   2271 2012-02-03 17:24 1.jpg

В браузере я могу вызвать http://<domain>/images/rails.png, но http://<domain>/images/other/1.jpg возвращает страницу public/404.html («Страница, которую вы искали, не существует»).

Что я делаю не так? Это проблема с разрешениями для одного из файлов / каталогов? Мой конфиг nginx настроен неправильно?

UPDATE

Когда я добавляю следующее в конфигурацию nginx приложения (ниже root) и запрашиваю 1.jpg, я получаю 403 Отказано в разрешении:

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

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Я вижу, что вы исправили это, но для тех, кто сталкивается с этой проблемой, всегда полезно возвращать 404 после вашего try_files кода ...

, используя приведенный выше пример

try_files $uri/index.html $uri @unicorn =404;
0 голосов
/ 29 марта 2012

Я исправил это.Каталог /home/deployer/other_images не имеет разрешений на чтение.

...