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 $ {
     }
    返回403;
 }

空的位置块是故意的,因为nginx不支持负的正则expression式匹配。 如果一个文件位于/ gameserver /下方,并以.pk3结尾,则空白位置块匹配,并且请求被授予。 你当然可以在那里添加额外的指令。 如果一个文件位于/ gameserver /下,并且以.pk3结尾,则内部位置块不匹配,而是执行返回403(禁止访问)。

nginx的一般规则是你想避免“如果”,如果你需要任何forms的path匹配你想依靠(嵌套)的位置块。