Как запретить отдачу файлов из location?

Max Ivanov ivanov.maxim на gmail.com
Ср Янв 19 20:26:07 MSK 2011


Хочу сделать что-то вроде whitelist на файлы и при этом не отдавать на
php файлы которые существуют (мало ли что там есть).

Для этого надо запретить скачивание файлов в location если они есть и
корректно уходить на 404 если их нет.

location / {
 error_page 404 = @drupal;
 return 403;  # <--- вот так не работает, не отрабатывает на @drupal никогда
}

location @drupal {
    rewrite ^/(.*)$ /index.php?q=$1;
}

location =/index.php {
    include /etc/nginx/settings/fastcgi.conf;
    fastcgi_pass php_upstream1;
}

#Для ImageCache
location /sites/all/files/imagecache/ {
    try_files $uri @drupal;
}

#разрешаем любые файлы из sites/all/files
location /sites/all/files/ {
}

#разрешаем js/css/png/ и проч отовсюду, т.к. они разрбросаны в разных модулях
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
}


Подробная информация о списке рассылки nginx-ru