Page 1 of 1
NGINX - закрыть доступ к всему каталогу
Posted: Wed Aug 26, 2015 7:11 pm
by gloobus
Добрый день!
Помогите пожалуйста решить проблему, не могу разобраться.
В корне есть папка /files/images/ и там есть изображения
Мне нужно закрыть доступ к этим изображениям. Но, что я только не пытался сделать, у меня не выходит этого!
Я пробовал в nginx.conf в нужно секции server { ... } указывать следующее:
Code: Select all
location /files/images/ { denny all; }
Но это совсем не помогало,
http://domain/files/images/name.jpg возвращало изображение.
Я как то предполагаю что это связано с тем, что статика отдается nginx
В общем с конфигурацией nginx-а у меня беда, подскажите как правильно?
Re: NGINX - закрыть доступ к всему каталогу
Posted: Wed Aug 26, 2015 7:49 pm
by skurudo
Направление движения верное
Code: Select all
location /files/images {
deny all;
return 404;
}
Поднимите выше основного локейшена.
Re: NGINX - закрыть доступ к всему каталогу
Posted: Wed Aug 26, 2015 8:44 pm
by gloobus
Да пробовал, и так тоже пробовал! Не помогает!
И куда только не сувал этот локейшн...
Вот смотрите, делаю эксперимент:
1. создаю папку test внутри files
2. помещаю в нее 3 файла 1.png и 1.txt и 1.bbb
3. пробую открыть каждый
http://domain/files/test/1.xxx - все открываются, все нормально!
4. добавляю в nginx.conf локейшн location /files/test/ { deny all; return 404; }
5. повторяю пункт 3, только на 1.bbb вываливается 404 ошибка, остальные два продолжают открываться.
Это все из-за экстеншенов для статики!
Возможно надо было сказать, но конфиг у меня не совсем стандартный!
Я вывел локейшн для статики из основного локейшена, что бы замутить limit_req и что бы он не распространялся на статику. Тобишь у меня сейчас как то так:
Code: Select all
server {
listen 111.222.333.444:80;
server_name domain.ru www.domain.ru;
error_log /var/log/httpd/domains/domain.ru.error.log error;
location / {
limit_req zone=dyn burst=10;
proxy_pass http://111.222.333.444:8080;
}
location ~* ^.+\.(jpg|jpeg|gif|png|ico|svg|css|zip|tgz|gz|rar|bz2|exe|pdf|doc|xls|ppt|txt|odt|ods|odp|od$
root /home/admin/web/domain.ru/public_html;
access_log /var/log/httpd/domains/domain.ru.log combined;
access_log /var/log/httpd/domains/domain.ru.bytes bytes;
expires max;
try_files $uri @fallback;
}
location /error/ {
alias /home/admin/web/domain.ru/document_errors/;
}
location @fallback {
proxy_pass http://111.222.333.444:8080;
}
location ~ /\.ht {return 404;}
location ~ /\.svn/ {return 404;}
location ~ /\.git/ {return 404;}
location ~ /\.hg/ {return 404;}
location ~ /\.bzr/ {return 404;}
location /files/test/ { deny all; return 404;}
...
}
Re: NGINX - закрыть доступ к всему каталогу
Posted: Wed Aug 26, 2015 9:41 pm
by skurudo
gloobus wrote:Да пробовал, и так тоже пробовал! Не помогает!
И куда только не сувал этот локейшн...
Как и доктор Хаус проверил, рабочий конфиг же:
Code: Select all
server {
listen moe:80;
server_name moe;
error_log /var/log/apache2/domains/moe.ru.error.log error;
location /images {
deny all;
return 444;
}
location / {
proxy_pass http://moe:8080;
location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html|ttf|otf|webp|woff|txt|csv|rtf|doc|docx|xls|xlsx|ppt|pptx|odf|odp|ods|odt|pdf|psd|ai|eot|eps|ps|zip|$
root /home/ultear/web/moe.ru/public_html;
access_log /var/log/apache2/domains/moe.ru.log combined;
access_log /var/log/apache2/domains/moe.ru.bytes bytes;
expires max;
try_files $uri @fallback;
}
}
...блаблабла дальше
gloobus wrote:Возможно надо было сказать, но конфиг у меня не совсем стандартный!
Я вывел локейшн для статики из основного локейшена, что бы замутить limit_req и что бы он не распространялся на статику. Тобишь у меня сейчас как то так:
Стоило бы с этого начать, да :)
Как вариант картинки можно брать в каком-то одном каталоге:
Code: Select all
location ~* \.(jpg|jpeg|gif)$ {
root /home/admin/web/domain.ru/public_html/img4all;
access_log off;
expires 30d;
Но если извращаться, то уж по полной:
Code: Select all
location ~* ^.+\.(jpg|jpeg|gif|png|ico|svg|css|zip|tgz|gz|rar|bz2|exe|pdf|doc|xls|ppt|txt|odt|ods|odp--ну тут все не скопировалось, но в целом понятно, что полно расширений) {
try_files $uri @fallback;
#началась вложенная шняга с каталогом
location ~*/images {
deny all;
return 403;
}
root /home/moe/web/moe.ru/public_html;
access_log /var/log/apache2/domains/moe.ru.log combined;
access_log /var/log/apache2/domains/moe.ru.bytes bytes;
expires max;
}
Re: NGINX - закрыть доступ к всему каталогу
Posted: Wed Aug 26, 2015 9:43 pm
by skurudo
Указанные куски (первый и третий) - проверил, они работают вполне себе.
Главное копировать аккуратно и не забыть service nginx reload делать.
Re: NGINX - закрыть доступ к всему каталогу
Posted: Wed Aug 26, 2015 10:02 pm
by gloobus
skurudo wrote:Но если извращаться, то уж по полной:
Извращения помогли, большое спасибо :) Так работает!
Хотя, я что-то пытался типа подобного сделать, единственное может быть с синтаксисом напутал, но локейшн внутрь эксепшенов статики я точно сувал :)
Отлично, еще раз спасибо, можно идти спать :)
Re: NGINX - закрыть доступ к всему каталогу
Posted: Wed Aug 26, 2015 10:05 pm
by skurudo
Отлично, хорошо что разобрались :)