Назад | Перейти на главную страницу

Расширение файла белого списка nginx

 server {
    listen  80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default ipv6only=on; ## listen for ipv6

server_name public;
root /var/www/public;

location = /gameserver/
{
root /var/www/public/gameserver;
index index.html;
    if ($request_filename !~* [pk3]$)
    {
        rewrite ^ /404.html;
    }
}

}

Я новичок в Nginx, и я пытался в течение нескольких часов (гуглить и читать руководство), но я не могу понять, как запретить все расширения файлов, кроме .pk3, с помощью nginx.

/ var / www / gameserver / указывает на симбиотическую ссылку, откуда я хочу только загрузить .pk3.

Это будет небольшой игровой сервер, где можно весело провести время с друзьями, без денег.

Спасибо за ваше время,

Виталий

Вы можете добиться этого, используя вложенное местоположение, например:

location /gameserver/ {
    root /var/www/public;
    index index.html;
    location ~ \.pk3$ {
    }
    return 403;
}

Пустой блок местоположения является преднамеренным и необходим, поскольку nginx не поддерживает отрицательные совпадения регулярных выражений. Если файл расположен ниже / gameserver / и оканчивается на .pk3, то пустой блок местоположения совпадает и запрос удовлетворяется. Конечно, вы можете добавить туда дополнительные директивы. Если файл находится ниже / gameserver / и не не заканчиваются на .pk3, тогда внутренний блок местоположения не совпадает, и вместо этого выполняется возврат 403 (доступ запрещен).

Общее правило с nginx заключается в том, что вы хотите избежать «если», и если вам нужна какая-либо форма сопоставления путей, вы хотите полагаться на (вложенные) блоки местоположения.