LINUX.ORG.RU
ФорумAdmin

Nginx - Ошибка 404 при загрузке некоторых файлов

 


0

1

Nginx последней версии - 1.17.8 Debian 10 Ссылка - https://ustim.ru/soft

В конфиге домена root директория и alias расположены в разных местах

server {
  listen 80;
  server_name www.ustim.ru ustim.ru;
  charset UTF-8;

        root /var/www/ustim.ru/htdocs/;
        include /etc/nginx/templates/php-fpm7.3.conf;
        index index.html index.htm index.php;

        location /app.php {
                try_files $uri $uri/ /app.php?$query_string;
        }
        location /install/app.php {
                try_files $uri $uri/ /install/app.php?$query_string;
        }
        location / {
            limit_speed one 800k;
            try_files $uri $uri/ /index.php?$args;
        }


#Доступ к папке /soft (без пароля)
   location /soft {
        alias /mnt/fs-soft/;
        autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on;
        dav_access user:rw group:rw all:rw;
        dav_methods PUT DELETE MKCOL COPY MOVE;
        create_full_put_path on;
        client_max_body_size 3G;
        limit_speed one 500k;
   }
}

А вопрос собственно такой… Почему некоторые файлы скачиваются норм, а некоторые выдают 404 ошибку? Например этот скачивается… файл ISO, размер 3ГБ А этот выдает ошибку… файл RAR, размер 800МБ.

Права на все файлы 775 www-data:www-data

Ну т.е. ты показываешь сервер конфиг для 80 и кидаешь ссылки на 443. На кого это расчтитано

anonymous
()
Ответ на: комментарий от router

а что в error логе nginx?

В логе пишет что файл в директории не найден.

*2020/03/05 09:43:48 [error] 5302#5302: 7965 open() «/var/www/ustim.ru/htdocs/soft/test.rar» failed (2: No such file or directory), client: 78.107.254.14, server: www.ustim.ru, request: «GET /soft/test.rar HTTP/1.1», host: «ustim.ru», referrer: «https://ustim.ru/soft/»

alterak
() автор топика
Последнее исправление: alterak (всего исправлений: 1)
Ответ на: комментарий от anonymous

Ну т.е. ты показываешь сервер конфиг для 80 и кидаешь ссылки на 443. На кого это расчтитано

Зачем вам смотреть на лишний мусор в конфиге? Это не имеет абсолютно никакого значения.

alterak
() автор топика
Ответ на: комментарий от alterak

Зачем вам смотреть на лишний мусор в конфиге? Это не имеет абсолютно никакого значения.

Да ладно? Совершенно две разные настройки и никакого значения?
/var/www/ustim.ru/htdocs/soft/test.rar
и
/mnt/fs-soft/

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от anc

Да ладно? Совершенно две разные настройки и никакого значения?

Господи, да чем вам редирект от Certbot?? Вы бы лучше по сути ответили… Если вам интересно, то ниже в секцию сервера добавлено только:

        access_log /var/log/nginx/ustim.ru_access.log;
        error_log /var/log/nginx/ustim.ru_error.log;

        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/ustim.ru/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/ustim.ru/privkey.pem; # managed by Certbot
        ssl_session_cache shared:le_nginx_SSL:1m; # managed by Certbot
        ssl_session_timeout 1440m; # managed by Certbot

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # managed by Certbot
        ssl_prefer_server_ciphers on; # managed by Certbot

        ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES128-SHA ECDHE-ECDSA-AES256-SHA ECDHE-ECDSA-AES128$


    if ($scheme != "https") {
        return 301 https://$host$request_uri;
    } # managed by Certbot
alterak
() автор топика
Ответ на: комментарий от anc

/var/www/ustim.ru/htdocs/soft/test.rar

Это путь по location

/mnt/fs-soft/

Это алиас, который (как все утверждают) можно указывать ВНЕ директории root.

alterak
() автор топика
Ответ на: комментарий от alterak

Это алиас, который (как все утверждают) можно указывать ВНЕ директории root.

Кто ВСЕ эти люди?!

Сcылки, пароли, явки.

На самом деле нет не совсем так, как хотелось бы

https://webmasters.stackexchange.com/questions/58735/how-to-map-requests-to-an-external-directory

Читать до наступления просветления ;-)

Twissel ★★★★★
()
Последнее исправление: Twissel (всего исправлений: 1)
Ответ на: комментарий от Twissel

Это алиас, который (как все утверждают) можно указывать ВНЕ директории root. Кто ВСЕ эти люди?! Сcылки, пароли, явки. На самом деле нет не совсем так, как хотелось бы

А чем вам офф документация мешает? Там вроде написано…

Синтаксис: alias путь; Умолчание: — Контекст: location

Задаёт замену для указанного location’а. Например, при такой конфигурации

    location /i/ {
        alias /data/w3/images/;
    }

на запрос “/i/top.gif” будет отдан файл /data/w3/images/top.gif.

В значении параметра путь можно использовать переменные, кроме $document_root и $realpath_root.

Взято тут

Я же вроде по-русски написал, что какие-то файлы открываются, а какие-то нет

alterak
() автор топика
Последнее исправление: alterak (всего исправлений: 1)
Ответ на: комментарий от alterak

Я документацию читаю первым делом, как правило.

Она мне не мешает.

Но заметьте, что там нигде не явно сказано, что alias может указывать вне корневого каталога веб-сервера.

Вы это домыслили, но на самом деле это не так, почему и возникла эта тема =)

Сам пока думаю над этим вопрос, но времени тестить нету)

Twissel ★★★★★
()
Ответ на: комментарий от Twissel

Я же вроде по-русски написал, что какие-то файлы открываются, а какие-то нет

Тогда бы у него ни один файл не открывался.

anonymous
()

Всем спасибо, методом экспериментов проблема была найдена. Все дело в подключенном PHP, который по сути для файлопомойки совсем не нужен.

Вопрос закрыт.

alterak
() автор топика
Ответ на: комментарий от alterak

А теперь таки сходите по моей ссылке, там не на 100% , но нечто подобное)

Удачи!

Twissel ★★★★★
()
Ответ на: комментарий от anonymous

Тогда бы у него ни один файл не открывался.

Не факт, test.rar лежит в корне и например могут быть другие права от вышестоящей директории с acl. Да вариантов много.

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от Twissel

Но заметьте, что там нигде не явно сказано, что alias может указывать вне корневого каталога веб-сервера.

И тем не менее он может

MrClon ★★★★★
()
Ответ на: комментарий от MrClon

И, тем не менее, кажись, что фокус в этом

nginx first searches for the most specific prefix location given by literal strings regardless of the listed order. In the configuration above the only prefix location is “/” and since it matches any request it will be used as a last resort. Then nginx checks locations given by regular expression in the order listed in the configuration file. The first matching expression stops the search and nginx will use this location. If no regular expression matches a request, then nginx uses the most specific prefix location found earlier.

http://nginx.org/ru/docs/http/request_processing.html

Twissel ★★★★★
()

ТС, поставь не теме отметку «Решено».

Twissel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.