Назад | Перейти на главную страницу

Нужна помощь в настройке nginx для обслуживания статических файлов

Я пытаюсь настроить nginx для обслуживания статических файлов. В основном все, что мне нужно, это иметь http://mydomain.com/site_media/ укажите на / var / django / myproject / site_media.

Я перепробовал так много конфигураций, и при тестировании всегда получаю ошибку 404 для статических файлов.

Может ли кто-нибудь сказать мне, что я делаю не так или как мне это настроить?

Это мой текущий файл конфигурации nginx.

user www-data;
worker_processes  1;

#error_log /usr/local/nginx/logs/error.log;
#pid /usr/local/nginx/logs/nginx.pid;

events {
    worker_connections  1024;
    use epoll;
}

http {

    # Enumerate all the Tornado servers here
    upstream frontends {
        server 127.0.0.1:8000;
        server 127.0.0.1:8001;
        server 127.0.0.1:8002;
        server 127.0.0.1:8003;
    }

    include       mime.types;
    default_type  application/octet-stream;

    #access_log /usr/local/nginx/logs/access.log;

    keepalive_timeout 65;
    proxy_read_timeout 200;
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    gzip on;
    gzip_min_length 1000;
    gzip_proxied any;
    gzip_types text/plain text/html text/css text/xml
               application/x-javascript application/xml
               application/atom+xml text/javascript;

    proxy_next_upstream error;

    server {
        listen 80;

        # Allow file uploads
        client_max_body_size 50M;

        location ^~ /site_media/ {
            root /var/django/myproject/site_media;
            if ($query_string) {
                expires max;
            }
        }
        location = /favicon.ico {
            rewrite (.*) /site_media/favicon.ico;
        }
        location = /robots.txt {
            rewrite (.*) /site_media/robots.txt;
        }

        location / {
            proxy_pass_header Server;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Scheme $scheme;
            proxy_pass http://frontends;
        }
    }

    #include /usr/local/nginx/sites-enabled/*;

}

Спасибо,

Ката

Я просмотрел журналы ошибок nginx и обнаружил, что он пытается обслуживать носитель с /var/django/myproject/site_media/site_media вместо того /var/django/myproject/site_media - странно.

Я изменился root /var/django/myproject/site_media; к root /var/django/myproject; и теперь это работает.

:)

Если вы не добавили косую черту в конце root /blah; директива добавит местоположение. Если вы включите косую черту в конце, этого не произойдет.