Есть в компании портал на котором оптовые клиенты делают заказы на продукцию которую формируют, производят и отгружают. Это портал (dealers.ekzorchik.ru) ранее упоминавшийся у меня в заметках (я его переносил с FreeBSD на Ubuntu 18.04 Server), он также располагается виртуальном выделенном сервере сервиса "CloudLite" где задействован для скидки мой промо-код «CloudLITE4116«, компания экономит, а не транжирит деньги на право и налево. Ну так вот, от Web-разработчика поступила задача: Настроить чтобы из директории /docs/ скачивались файлы с русским именованием: xls,pdf,docx в которых содержится Важная информация для клиентов.

Для решения поставленной задачи коллеги:

Открываем конфигурационный файл портала dealers и для местоположения docs прописываем Location:

В файле mime.types у nginx все расширения есть.

в самом nginx.conf прописано "include /etc/nginx/mime.types;"

aollo@ekzorchik.ru:~$ sudo nano /etc/nginx/sites-available/dealers.conf
       location /docs/  {
                add_header Content-Type "text/html; charset=UTF-8";
                autoindex on;
                autoindex_localtime on;
                autoindex_format html;
                #Округляем размер файлов до мегабайт
                autoindex_exact_size off;
        if ( $request_filename ~ "^.*/(.+\.(pdf|xlsx?|docx?))$"){
                set $fname $1;
                add_header Content-Disposition 'attachment; filename="$fname"';
        }
}

На заметку: конструкция "docx?" означает в регулярке, что "x" может и не быть, т.е. "docx?" совпадает как с "doc", так и с "docx"

aollo@ekzorchik.ru:~$ sudo nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

aollo@ekzorchik.ru:~$

aollo@ekzorchik.ru:~$ sudo chown -R www-data:www-data /var/www/html/dealers/docs

aollo@ekzorchik.ru:~$ sudo chmod -R 755 /var/www/html/dealers/docs

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

aollo@ekzorchik.ru:~$ sudo ls -l /var/www/html/dealers/docs

total 11812

-rwxr-xr-x 1 www-data www-data 5 Oct 18 09:04 test.txt

-rwxr-xr-x 1 www-data www-data 75776 Aug 18 10:47 'Бланк рекламации на ГИ.xls'

-rwxr-xr-x 1 www-data www-data 49229 Oct 14 14:26 'Доп. соглашение к договору на поставку ГИ.docx'

-rwxr-xr-x 1 www-data www-data 404313 Feb 1 2021 'из 1С в Мегу.pdf'

-rwxr-xr-x 1 www-data www-data 490779 Oct 4 15:05 'Неисправности негарантийных изделий.pdf'

-rwxr-xr-x 1 www-data www-data 50688 Aug 18 08:36 'Сочетание лента-лесенка-карниз_1-2inch_дерево-павловния-бамбук-пластик-алюминий.xls'

-rwxr-xr-x 1 www-data www-data 43008 Aug 18 08:36 'Сочетание лента-лесенка-карниз_16мм-ekzorchik.ru.xls'

-rwxr-xr-x 1 www-data www-data 60928 Sep 9 12:53 'Сочетание лента-лесенка-карниз_25мм-ekzorchik.ru.xls'

-rwxr-xr-x 1 www-data www-data 931876 Oct 4 14:58 'Стандарт качества для вертикальных жалюзи.pdf'

-rwxr-xr-x 1 www-data www-data 1284574 Oct 4 14:58 'Стандарт качества для горизонтальных жалюзи Алюминий 16-25-50.pdf'

-rwxr-xr-x 1 www-data www-data 1031996 Oct 4 14:58 'Стандарт качества для горизонтальных жалюзи Венус 16-25.pdf'

-rwxr-xr-x 1 www-data www-data 2251939 Oct 4 14:58 'Стандарт качества для горизонтальных жалюзи ДЕРЕВО-БАМБУК-ПЛАСТИК.pdf'

-rwxr-xr-x 1 www-data www-data 516039 Oct 4 15:05 'Стандарт качества для римских карнизов.pdf'

-rwxr-xr-x 1 www-data www-data 1193732 Oct 4 14:58 'Стандарт качества для рулонных штор.pdf'

-rwxr-xr-x 1 www-data www-data 1446335 Oct 4 14:58 'Стандарт качества для рулонных штор зебра.pdf'

-rwxr-xr-x 1 www-data www-data 499526 Oct 4 15:05 'Стандарт качества для штор Мираж.pdf'

-rwxr-xr-x 1 www-data www-data 511574 Oct 4 15:05 'Стандарт качества для шторных моторизованых карнизов.pdf'

-rwxr-xr-x 1 www-data www-data 1223062 Oct 4 14:58 'Стандарт качества для штор плиссе.pdf'

То вместо того, что скачиваться как нужно они открываться в нечитаемом виде, виной всему содержание символа пробел в именованиях. Мы их просто переименовываем где вместо символа пробела ставим символ нижнего подчеркивания и файлы из каталога /docs/ успешно при нажатии на искомый скачиваются. Вот такой вот хак на наш взгляд. Этот нюанс был сказал в общем чате через клиент qip Web-разработчику:

Сивков Владимир (11:38:03 18/10/2021)

готово, проверил, всё скачивается, спасибо

qip (11:40:27 18/10/2021)

тебе спасибо

Итого, поставленная задача выполнена, на этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.