Я пытаюсь настроить 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;
директива добавит местоположение. Если вы включите косую черту в конце, этого не произойдет.