как настроить nginx и разрешить только определенные файлы

Как в location прописать, что бы можно было только php, html, js, css, jpg, jpeg, gif, png, ico, а все остальное запретить под 404? Даже файлы без расширения. Писал точечный запрет на некоторые файлы по расширению, но хотелось бы просто разрешить нужное, а остальное запретить.


Ответы (1 шт):

Автор решения: nörbörnën
server {
    server_name media.site.ru;
    listen      80;

    location / {
        root /var/www/storage/f2;

        deny all; # deny by default

        location ~ "\.(php|html|js|css|jpg|jpeg|gif|png|ico)$" {
            allow all;
        }
    }
}

В директиву server_name запишите имя вашего сайта.

В директиву root запишите абсолютный путь к директории с файлами (без закрывающего слеша).


$ curl --head http://media.site.ru/q.jpg
HTTP/1.1 200 OK
Server: nginx/1.19.0

$ curl --head http://media.site.ru/priglos.zip
HTTP/1.1 403 Forbidden
Server: nginx/1.19.0
→ Ссылка