2015-01-20 3 views
-1

Статический файл не может служить через nginx. Я не нашел ответа на этот вопрос, поэтому, пожалуйста, помогите мне разобраться.Как обслуживать статический файл через nginx?

settings.py

DEBUG = False 

/etc/nginx/sites-available/example.com

upstream test { 
     server 127.0.0.1:8000; 
     keepalive 500; 
} 

server { 

    listen 80; 
    server_name example.com; 

    client_max_body_size 4G; 
    location /static/ { 
     alias /home/user/live/staticfiles/; 
    } 

    location/{ 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

     proxy_set_header Host $http_host; 

     proxy_redirect off; 
      proxy_pass http://test; 

    } 

} 

кошка /var/log/nginx/error.log показывает меня ниже:

2015/01/20 05:43:07 [error] 4480#0: *7 open() "/home/user/live/staticfiles/images/footer-logo.png" failed (13: Permission denied), client: 182.74.206.202, server: example.com, request: "GET /static/images/footer-logo.png HTTP/1.1", host: "example.com", referrer: "example.com/" 

Update:

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

[[email protected] home]$ namei -om /home/myuser/live/staticfiles/js/jquery.fancybox.js 
f: /home/myuser/live/staticfiles/js/jquery.fancybox.js 
dr-xr-xr-x root   root  /
drwxr-xr-x root   root   home 
drwxrwxrwx myuser  myuser  myuser 
drwxrwxrwx root   root   live 
drwxrwxrwx myuser  myuser  staticfiles 
drwxrwxrwx myuser  myuser  js 
-rwxrwxrwx myuser  myuser  jquery.fancybox.js 
+0

Возможный дубликат из [Nginx бросает 403 Запрещено на статические файлы] (http://stackoverflow.com/questions/20182329/nginx-is-throwing-an-403-forbidden-on-static-files) –

ответ

0

Прежде всего вы проверить настройки для статического файла, который должен выглядеть этот параметр

STATIC_ROOT = "/home/user/live/collected_static/" 
STATIC_URL = '/static/' 

STATICFILES_DIRS = (
    PROJECT_DIR.child("static"), 
) 

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
    #'django.contrib.staticfiles.finders.DefaultStorageFinder', 
) 

затем запустить ./manage.py collectstatiC# это будет собирать все статические файлы в папку collected_static,

затем в настройках Nginx:

location /static { 
    alias /home/user/live/collected_static/; 
} 

    location/{ 

     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 
     if (!-f $request_filename) { 
      proxy_pass http://test; 
      break; 
     } 
    } 

Надеюсь, что это решит вашу проблему. а также проверить разрешение, если мы такие же, как код проекта django. нет необходимости давать дополнительное разрешение.

Для дополнительной настройки и очень хороший документ вы смотрите здесь: Setting up Django with Nginx, Gunicorn, virtualenv, supervisor and PostgreSQL

Для выдачи разрешения Nginx вы найдете решение из этих ссылок:

+0

Файлы такие же, как ваши Предлагаем. Мы свяжемся с teasmviewer ?? – Boothathan

+0

вы делаете это сначала: http://stackoverflow.com/questions/20182329/nginx-is-throwing-an-403-forbidden-on-static-files –

+0

http://stackoverflow.com/questions/6795350/nginx -403-запрещенные для всех файлы и http://serverfault.com/questions/628394/nginx-is-unable-to-open-and-thus-serve-files-despite-proper-filesystem -permiss –

Смежные вопросы