2016-01-20 3 views
1

Я получаю ниже ошибки при попытке доступа к файлам статических файлов, хотя я пытаюсь обратиться к static/js/main.js файлам, nginx ищет static/js/main.js/index.html .. ниже - это ошибка для одна и та же.Nginx 404 Файл не найден Ошибка для статических файлов django

2016/01/20 03:31:01 [ошибка] 2410 # 0: * 1 "/home/ubuntu/vnv/near/near/static/js/main.js/index.html" не найден найдено (20: не каталог), клиент: 162.111.50.122, сервер: my.domain.com, запрос: «GET /static/js/main.js/ HTTP/1.1», хост: «my.domain .com»

Ниже мой блок сервер ..

server { 
    listen 80; 
    server_name my.domain.com; 

    # location ~ ^/(static/.*) { 
    location ~ /static { 
     root /home/ubuntu/vnv/near/near; # near consist of static directory 
    } 

    location ~/{ 
     proxy_headers_hash_max_size 51200; 
     proxy_headers_hash_bucket_size 6400; 
     proxy_pass http://near_server; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
} 

Также он добавление / в конце URI, то, что может проблема здесь?

Примечание: Я прошел большинство ответов, связанных с этим, но я не нашел правильного решения для этой ситуации.

+0

Это поможет лучше, если вы включите свой html-код или где бы вы ни пытались получить доступ к файлу –

+0

@AlexJolig Я просто пытаюсь получить доступ к статическому файлу непосредственно с клиента, но проблема здесь в том, что я включаю 'autoindex', тогда он получает только каталог 'static'. для остальных файлов в статическом каталоге он дает мне 404. Кстати, эти статические файлы являются частью моего проекта 'django' –

+0

Конечно,'/home/ubuntu/vnv/near/near/static/js/main.js' существует? –

ответ

1

Если запрос URI заканчивается на /, nginx будет рассматривать его как каталог и применять правила индексирования. Если не переопределено, nginx ищет файл index.html.

Из сообщения об ошибке мы видим, что запрос GET был для /static/js/main.js/. Таким образом, вопрос: кто прилагает / к запросу URI?

Если вы сейчас заглянете в журнал доступа, вы увидите строку, содержащую GET /static/js/main.js/ HTTP/1.1 404, в которой указан код ответа HTTP.

Если приведенная выше строка содержит GET /static/js/main.js HTTP/1.1 3xx, то nginx добавлены дополнительные /. Если такой линии нет, клиент запрашивает неправильный URL-адрес, и вам нужно искать решение проблемы в другом месте.

Unrelated на ваш вопрос: почему вы используете регулярных выраженийlocation блоки, когда префиксlocation блоки кажутся более подходящими?

Вы, вероятно, следует использовать:

location /static { ... } 
location/{ ... } 

Существующая конфигурация неэффективна и соответствует URI, с /static внедренные в любом месте в пределах строки, например: /something/static.php.

См. this document для location синтаксиса и правил обработки.